题目描述
【问题描述】
洛洛现在手上有三颗多面骰子,多面骰子不是常见的六面骰子,而是33面骰子、100面骰子……一般来说,i面骰子每个面上的点数分别是1,2,3,……i。
洛洛手上的三颗骰子的面数可能并不相同,他想知道掷出三颗骰子的所有情况中,三颗骰子的点数之和出现最多次数是几点。
如果存在多个点数之和出现次数相同的情况,则按点数之和从小到大顺序输出。
【输入】
第一行输入三个整数 n1, n2, n3,分别表示三颗骰子各自的面数。
【输出】
输出一行含任意个整数,分别表示次数最多的点数之和,用空格隔开。
【输入输出样例】
样例输入1
样例输入2
1 2 3
2 3 4
样例输出1
样例输出2
4 5
6
【样例解释】
样例1,骰子投出来有以下六种情况:
1+1+1=3 1+1+2=4 1+1+3=5
1+2+1=4 1+2+2=5 1+2+3=6
可以看出4和5的出现次数最多且都是2次。
【数据范围约定】
对于50%的数据,保证1 ≤ n1,n2,n3 ≤ 5;
对于80%的数据,保证1 ≤ n1,n2,n3 ≤ 10。
对于100%的数据,保证1 ≤ n1,n2,n3 ≤ 100。
#include<bits/stdc++.h>
using namespace std;
int a,b,c,n[350],s,m,w[100],z;
int main()
{
cin>>a>>b>>c;
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
for(int k=1;k<=c;k++)
{
s=i+j+k;
n[s]++;
}
for(int i=1;i<=300;i++)
{
if(n[i]>m)
{
m=n[i];
for(int i=1;i<=z;i++)
w[i]=0;
z=0;
w[++z]=i;
}
else
if(n[i]==m)
w[++z]=i;
}
for(int i=1;i<=z;i++)
cout<<w[i]<<" ";
return 0;
}