开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
[NOIP2004 提高组] 津津的储蓄计划
题目描述
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 元或恰好 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如 月初津津手中还有 元,妈妈给了津津 元。津津预计月的花销是 元,那么她就会在妈妈那里存 元,自己留下 元。到了 月月末,津津手中会剩下 元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据 年 月到 月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到 年年末,妈妈将津津平常存的钱加上 还给津津之后,津津手中会有多少钱。
输入格式
行数据,每行包含一个小于 的非负整数,分别表示 月到 月津津的预算。
输出格式
一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出 , 表示出现这种情况的第一个月;否则输出到 年年末津津手中会有多少钱。
注意,洛谷不需要进行文件输入输出,而是标准输入输出。
样例 #1
样例输入 #1
290
230
280
200
300
170
340
50
90
80
200
60
样例输出 #1
-7
样例 #2
样例输入 #2
290
230
280
200
300
170
330
50
90
80
200
60
样例输出 #2
1580
分析
这是一个很简单的题目,简单的循环遍历,一次循环,去模拟每个月的经济流动!
代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
int a[12],t=0,s=0,l=0;
memset(a,0,sizeof(a));
for(int i=1;i<=12;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=12;i++){
if(t+300<a[i]){
s=-i;
break;
}
l=300-a[i];
if(l%100!=0){
s+=100*(l/100);
t+=l-100*(l/100);
}
if(l%100==0){
t+=l;
}
if(t>=100){
s+=100*(t/100);
t-=100;
}
}
if(s>0){
s=s*1.2+t;
}
printf("%d",s);
return 0;
}