EOJ-2902 Contest
http://acm.cs.ecnu.edu.cn/problem.php?problemid=2902
题意:给出一系列百分数(仅取两位小数位并四舍五入),意为第i题的通过率,从这些数据中得到至少有几个队伍参赛
仅取两位小数,故可以通过枚举完成(1~100)
假设有n个队伍参赛,则通过率只可能是0/n,1/n,..n/n;
1 #include<map> 2 #include<queue> 3 #include<cmath> 4 #include<cctype> 5 #include<cstdio> 6 #include<string> 7 #include<cstdlib> 8 #include<cstring> 9 #include<iostream> 10 #include<algorithm> 11 using namespace std; 12 int main(){ 13 int n; 14 while(cin>>n){ 15 int p[15],v[105]; 16 memset(v,0,sizeof(v)); 17 for(int i=0;i<n;i++){ 18 scanf("%d",p+i); 19 v[p[i]]++; // v数组用于记录题目每种通过率各出现几次 20 } 21 for(int i=1;i<=100;i++){ 22 int cnt=0; 23 for(int j=0;j<=i;j++){ 24 double t=100*(1.0*j/i)+0.5; //此处枚举,以及四舍五入的处理 25 cnt+=v[(int)t]; 26 } 27 if(cnt==n){cout<<i<<endl;break;} //如果总出现次数是n次就完成(得出最小值) 28 } 29 } 30 return 0; 31 }