题目描述:
在sicily在线测试系统里,有一种特别评分方法。题目被越多的用户解出,每个用户该题的得分就越少。现在按照解出题目的用户数划分区间,给出了每个区间的题目的得分情况,如下表:
解题用户数 分数
1-10 10
11-30 8
31-50 6
51-75 4
76-100 2
100以上 1
已知解决每个题目的用户数,你的任务是计算出指定用户的分数。
输入格式第一行是一个整数n(1<=n<=300),表示参加在线测试系统里题目的数量。(题目的编号是从1000—1000+n-1)
第二行是n个用空格分开的正整数,表示解决了这1-n道题的用户的数量。
第三行是一个整数t(t<=30),表示要计算分数的用户数量。
接下来有t行,每行第一个数字表示该用户解题的数量a,接着有a个1000—1000+n-1间的数,表示该用户解了哪些题。
输出格式输出有t行,每行对应一个整数,表示对应用户的得分。
输入/输出例子1输入:
10
100 10 11 3 45 7 34 200 70 1
4
2 1000 1001
2 1001 1002
0
3 1000 1007 1008
输出:
12
18
0
7
样例解释无
分析:
这题比较简单,但是却很繁琐啊,这题所给的评分方式标准需要通过6个if来实现
代码如下:
#includeusing namespace std; int n,t,a[10010],s,x,m; int main() { cin>>n; for(int i=1000;i<=999+n;i++) { cin>>x; if(x>=1&&x<=10) a[i]=10; if(x>=11&&x<=30) a[i]=8; if(x>=31&&x<=50) a[i]=6; if(x>=51&&x<=75) a[i]=4; if(x>=76&&x<=100) a[i]=2; if(x>100) a[i]=1; } cin>>t; for(int i=1;i<=t;i++) { cin>>m; s=0; for(int j=1;j<=m;j++) { cin>>x; s=s+a[x]; } cout< 文章仅供参考,切勿用于其他目的哦!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)