安徽省青少年信息学奥林匹克竞赛------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 i 和 c 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;
}
