PTA 刷题与Z老师的头发
刷题与Z老师的头发 (10 分)
在Pintia上,每天Z老师出题、小盆友们刷题。Z老师的头发遵从以下规律:
1、每天生长出60根头发;
2、每出一道题,减少20根头发;
3、每天结束时统计累积做题情况:
(1)若出的题全部被做出来,则Z老师产生“没题焦虑”,减少30根头发;
(2)若小盆友做出来的题少于50%,则Z老师产生“学生不用功焦虑”,减少70根头发。
现给定连续N天的出题、刷题情况,请计算Z老师头发的变化情况。
输入格式:
第一行输入一个正整数N
(N<20
);
接下来N
行,每行输入两个非负整数,分别是一天的出题数量q
和刷题(做出来)数量s
,以空格间隔。
题目输入保证出题总数量不超过N*10
,并且每天的刷题量不会使累积刷题数量超过累积出题数量。
输出格式:
若Z老师头发增加K
根,则输出+K
;若Z老师头发减少K
根,则输出-K
;若没有变化,则输出--
输入样例1:
3
5 3
5 1
5 11
输出样例1:
-220
输入样例2:
3
3 2
3 2
3 2
输出样例2:
--
题意:此题一开始我没读懂题意,就WA了几次。然后后面别人告诉我,我就找道了自己的错误,就是每次累加每天的出题数量和刷题数(这两个数只需要不断累加,不需要减),然后用这两个判断,而不是用题目给的p和s。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main() { long long n,q,s,sum=0,x=0,y=0; scanf("%lld",&n); sum=n*60; //加上每天增长的头发数 while(n--) { scanf("%lld%lld",&q,&s); x+=q,y+=s; //每次进行累加,两个值都要 if(y==x) //判断题是否全部做出来了 sum-=30; else if(1.0*y/x<0.5) //判断做出来的题目数是否少于50% sum-=70; } sum-=x*20; //减去每天掉下的头发数 if(sum!=0) printf("%+lld\n",sum); else printf("--\n"); return 0; }