EOJ2902 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 }
View Code
原文地址:https://www.cnblogs.com/KimKyeYu/p/3137778.html