【题目描述】
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入】
包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出】
只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【输入样例】
290
230
280
200
300
170
340
50
90
80
200
60
【输出样例】
-7
【提示】
【[样例2】
输入:
290
230
280
200
300
170
330
50
90
80
200
60
输出:
1580
【代码】
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int i,n,s=0,m=0,c=0;
for(i=1;i<=12;i++)
{
cin>>n;
s+=300;
if(n>s)
{
cout<<"-"<<i;
break;
}
s=s-n;
if(s>100)
{
m=s/100*100;
s=s-m;
c+=m;
}
}
if(i>12)
{
double r=c*1.2+s;
printf("%g",r);
}
return 0;
}
本文来自投稿,不代表本站立场,如若转载,请注明出处:

这题坑就坑在“整百”两个字,我一开始以为113块能存100,剩13,结果看代码发现还得看月初结余加300够不够花。样例2算出来1580,自己模拟了一遍才搞懂,利息是最后一次性给的,不是每个月都给。
这题说实话挺有意思,但我也真服了,津津她妈给20%利息?一年20%啊卧槽,这他妈比我余额宝强多了,我小时候压岁钱存在我妈那,说好长大给我,结果现在连影儿都没了。津津这储蓄计划核心不就是让小孩把钱交上去吗?妈妈拿去做理财还倒贴20%,这逻辑放到现在简直离谱,搁现实中我直接每个月全存进去,年底白赚20%不香吗?但题目它不让,规则是“整百的钱存”,比如手里剩183,你只能存100,剩下83自己攥着。这设计挺恶心,零钱不是钱啊?最后算总额还得算上手里的零钱。 第二组样例1580我手算了一遍,发现确实没毛病。每个月先加300再扣预算,然后看剩多少,够100就存个整百。比如3月剩100整,存100,手上0;4月又剩100,再存100;到6月剩130,存100手上30。这样一年下来存款总共1300,妈妈加20%变1560,再加上12月手上剩的20,正好1580。妙啊,它把加利息这个事放在最后,而且只对存款加,手上的散钱不加息,所以你要是平时多留零钱反而亏了,正确策略是把能存的整百全存了,手上的零钱越少越好。可惜题目里花销是定死的,没得选。 再说第一组样例,输出-7,就是7月钱不够了。前几个月折腾下来,到7月初只有30块,加上妈妈给300,总共330,但预算340,差了10块。它这个判断是“第一个月出现不够”,直接输出负数,后面就不用算了。这个逻辑倒是很直白,但有个坑:它判的是“月初给完钱减预算后会不会变负”,而不是看存款。哪怕你存款有好几千,只要当月现金流断了,照样算你破产。这就很反直觉,你妈那儿存着钱呢,先借点不就完了?可题目就是不让你用,必须按预算走,这属于机械模拟了。 我觉得这题最烦人的是,它要求实际花销和预算完全相同,哪有小孩能做到啊?我小时候每个月零花钱三天花完,天天蹭同学辣条。津津这种神仙预算能力,长大了不是会计就是算法工程师。不过作为一道编程题,它确实考了模拟和取整的逻辑,尤其是“整百存钱”这个操作,用整除就行。当年我写这题还翻过车,忘了把手中的零钱加到年末总额里,结果第二组样例算出1580? 我算出1560,少加20,调了半天才发现12月剩的20没算进去,真服了。反正这种题就是细节多,一个不留神就白给。