多面骰子

题目描述
【问题描述】
洛洛现在手上有三颗多面骰子,多面骰子不是常见的六面骰子,而是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;
}

猜你喜欢

转载自blog.csdn.net/m0_52628784/article/details/112429681