题意:给了一个公式,要根据公式算分数,然后算分数的频率,输出频率最高的几个分数。如果不是所有的分数都相同并且频率都相同,就没有“mode”。
思路:阅读理解
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int frequence[10005];
int main()
{
//freopen("data.txt","r",stdin);
int T;
scanf("%d",&T);
int kase=0;
while(T--)
{
printf("Case #%d:\n",++kase);
memset(frequence,0,sizeof(frequence));
int n;
scanf("%d",&n);
bool vdif=false;
int lastv=-1;
for(int i=0;i<n;++i)
{
int w;
scanf("%d",&w);
int v=10000-(100-w)*(100-w);
if(lastv!=v&&lastv!=-1)vdif=true;
lastv=v;
frequence[v]++;
}
int tot=0;
int fmaxn=0;
bool fredif=false;
int lastfre=-1;
for(int i=0;i<=10000;++i)
{
if(frequence[i]>fmaxn)
{
fmaxn=frequence[i];
}
if(frequence[i]!=lastfre&&lastfre!=-1&&frequence[i]!=0)fredif=1;
if(frequence[i]!=0)
lastfre=frequence[i];
}
if(vdif==true&&fredif==0){
puts("Bad Mushroom");
continue;
}
bool flag=0;
for(int i=0;i<=10000;++i)
{
if(frequence[i]==fmaxn){
if(flag)printf(" %d",i);
else {printf("%d",i);flag=1;}
}
}
printf("\n");
}
return 0;
}