【题目描述】
贝茜喜欢玩棋盘游戏和角色扮演游戏,所以她说服了约翰开车带她去小商店,在那里她买了三个般子.这三个不同的般子分别有Si, S2. S3个面。
贝茜扔一个有S个面的般子,每个面上的数字是1,2,3,…S。每个面出现的概率均等,她希望找出在所有三个面上的数字的和中,哪个出现的概率最大。
现在给出每个般子的面数,需要求出哪个所有三个面上的数字的和出现得最频繁。如果有很多个和出现的概率相同,那么只需要输出最小的那个。
【输入格式】
三个用空格分开的整数Si, S2, S3(2<=s1,s2<=20,2<=s3<=40)。
【输出格式】
当骰子们被扔出各种可能的组合时,出现频率最高的,数值最小的那个和。
【分析】
直接模拟,暴力算出所有的和,在开个桶,直接算就可以了。
【代码】
1 #include2 3 using namespace std; 4 5 int s1,s2,s3,ans,num; 6 int a[110]; 7 8 int main() 9 { 10 memset(a,0,sizeof(a)); 11 scanf("%d%d%d",&s1,&s2,&s3); 12 for(int i=1;i<=s1;i++){ 13 for(int j=1;j<=s2;j++){ 14 for(int k=1;k<=s3;k++){ 15 a[i+j+k]++; 16 } 17 } 18 } 19 num=0; 20 for(int i=1;i<=s1+s2+s3;i++){ 21 if(a[i]>num) num=a[i],ans=i; 22 } 23 printf("%d\n",ans); 24 return 0; 25 }