Advertisement

安徽省青少年信息学奥林匹克竞赛------T1----绩点

阅读量:

T1 绩点(grade) 查看测评数据信息

【题目背景】

转眼间,小可可已经上大学了。他现在面临着绩点焦虑。 在小可可这学期选的一门课上,同学们都在为作业分而拼命开卷。 小可可和同学小多总是说对方是卷怪,现在请你算算到底谁的作业分更高。

【问题描述】 这门课共有 N 个作业,第 i 次作业的满分为 a i 分,小可可在第 i 次作业中获得了 该作业满分的 b i %,小多在第 i 次作业中获得了该作业满分的 c i %。 请你来判断一下,谁才是那个作业分更高的卷王。

输入格式

第一行一个正整数 N ,代表作业数目。

第二行 N 个正整数, a 1 , a 2 ,__· · · , a N ,代表每次作业的总分。

第三行 N 个整数, b 1 , b 2 ,__· · · , b N ,代表上文中小可可每次作业的得分率。

第四行 N 个整数, c 1 , c 2 ,__· · · , c N ,代表上文中小多每次作业的得分率。

【数据规模与约定】

对于 30% 的数据,满足 b ic i 要么等于 0 要么等于 100。

对于另外 30% 的数据,满足所有的 a i 相等。

对于 80% 的数据,满足 1 a i 100。

对于 100% 的数据,满足 1 N 10000 , 1 a i 10000 , 0 b i , c i 100。

输出格式

如果小可可分数更高,则输出 ke;如果小多分数更高,则输出 do;如果两人分数 一样,则输出 same。

输入/输出例子1

输入:

5

10 10 10 10 20

80 80 80 80 80

100 100 100 100 50

输出:

do

样例解释

小可可获得了 10 × 80% + 10 × 80% + 10 × 80% + 10 × 80% + 20 × 80% = 48 分。

小多获得了 10 × 100% + 10 × 100% + 10 × 100% + 10 × 100% + 20 × 50% = 50 分。

所以小多分数更高,应该输出 do。

题解:已知等式两边的性质是相等的;

所以:a[i]*b[i]/100==a[i]*c[i]/100

a[i]b[i]/100100==a[i]c[i]/100100

a[i]*b[i]==a[i]*c[i]

(注意:这里不可以开double)

复制代码
 #include<bits/stdc++.h>

    
 using namespace std;
    
 int a[10005];
    
 int b[10005];
    
 int c[10005];
    
 int sum1;
    
 int sum2;
    
 int main(){
    
      int n;
    
      scanf("%d",&n);
    
      for(int i=1;i<=n;i++){
    
 		 scanf("%d",&a[i]);
    
 	 }
    
 	 for(int i=1;i<=n;i++){
    
 		 scanf("%d",&b[i]);
    
 	 }
    
 	 for(int i=1;i<=n;i++){
    
 		 scanf("%d",&c[i]);
    
 	 }
    
 	 for(int i=1;i<=n;i++){
    
 		 sum1+=a[i]*b[i];
    
 	 }
    
 	 for(int i=1;i<=n;i++){
    
 		 sum2+=a[i]*c[i];
    
 	 }
    
 	 if(sum1>sum2){
    
 		 printf("ke");
    
 	 }
    
 	 else if(sum1<sum2){
    
 		 printf("do");
    
 	 }
    
 	 else{
    
 		 printf("same");
    
 	 }
    
 	 return 0;
    
 }
    
    
    
    

全部评论 (0)

还没有任何评论哟~