[USACO08OCT] Bovine Bones G

Link do tópico

题目 描述
Bessie adora jogos de tabuleiro e jogos de RPG, então convenceu o fazendeiro John a levá-la à loja onde ela comprou três dados para jogar. Esses dados justos têm lados S1, S2 e S3

respectivamente (2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40).

Bessie rola e rola e rola tentando descobrir qual soma de três dados aparece com mais frequência.

Dado o número de lados em cada um dos três dados, determine qual soma de três dados aparece com mais frequência. Se mais de uma soma puder aparecer com mais frequência, relate a menor dessas somas.

PONTOS: 70

Formato de entrada

  • Linha 1: três inteiros separados por espaço: S1, S2 e S3

Formato de saída

  • Linha 1: A menor soma inteira que aparece com mais frequência quando os dados são lançados em todas as combinações possíveis.

Tradução do título
Bessie gosta de jogos de tabuleiro e jogos de RPG, então ela convenceu John a levá-la até a lojinha onde ela comprou três dados. Os números das faces desses três dados diferentes são s_1, s_2 e s_3 respectivamente.

Para um dado com faces SS, os números em cada face são 1, 2, 3, ..., S. Cada rosto (o número acima) tem uma probabilidade igual. Bessie espera descobrir qual soma tem maior probabilidade de aparecer entre todas as "somas de números em três lados".

Agora, dado o número de faces de cada dado, precisamos descobrir qual "soma dos números nas três faces" aparece com mais frequência. Se houver muitos com a mesma probabilidade, apenas o menor precisará ser gerado.

Faixa de dados: 2 ≤ s1 ≤20, 2 ≤ s2 ≤20, 2 ≤ s3 ≤40.

Amostra de entrada e saída
Input # 1
3 2 3
Output # 1
5
Explicação / Lembrete
Aqui estão todos os resultados possíveis.

1 1 1 -> 3  
1 2 1 -> 4  
2 1 1 -> 4  
2 2 1 -> 5  
3 1 1 -> 5  
3 2 1 -> 6 
1 1 2 -> 4  
1 2 2 -> 5  
2 1 2 -> 5  
2 2 2 -> 6  
3 1 2 -> 6  
3 2 2 -> 7 
1 1 3 -> 5  
1 2 3 -> 6  
2 1 3 -> 6  
2 2 3 -> 7  
3 1 3 -> 7  
3 2 3 -> 8

Ambos 5 e 6 aparecem com mais frequência (cinco vezes cada), então 5 é a resposta.

Código:

#include<iostream>
using namespace std;
int main()
{
    
    
	int s1, s2, s3, num[100] = {
    
    0}, maxn = 0, ans;
	cin >> s1 >> s2 >> s3;
	for(int i = 1; i <= s1; i++)
		for(int j = 1; j <= s2; j++)
			for(int k = 1; k <= s3; k++)
				num[i + j + k]++;
	for(int i = 0; i <= s1 + s2 + s3; i++)
		if(num[i] > maxn)
		{
    
    
			maxn = num[i];
			ans = i;
		}
	cout << ans << endl;
	return 0;
}

Acho que você gosta

Origin blog.csdn.net/qq_44826711/article/details/113748092
Recomendado
Clasificación