【小韦同学@神犇营-my0123-津津的储蓄计划】
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20% 还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如 11 月初津津手中还有 83 元,妈妈给了津津 300 元。津津预计 11 月的花销是 180 元,那么她就会在妈妈那里存 200 元,自己留下 183 元。到了 11 月月末,津津手中会剩下 3 元钱。
现在请你根据 2019 年 1 月到 12 月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到 2019 年年末,妈妈将津津平常存的钱加上 20% 还给津津之后,津津手中会有多少钱。
输入包括 12 行数据,每行包含一个小于 350 的非负整数,分别表示 1 月到 12 月津津的预算。
只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出 -X,X 表示出现这种情况的第一个月;否则输出到 2019 年年末津津手中会有多少钱。
290
230
280
200
300
170
340
50
90
80
200
60
-7
/*********************************************************************
* 题目:神犇营-my0123-津津的储蓄计划
* 作者:小韦老师
* 邮箱:weichangying_wcy@163.com
* 题解:
思路:
定义变量 remain(剩余的钱),预算(budget),存储的钱(save),超
出预算的月份(over),均初始化为 0。
枚举 1~12 月,每个月的 remain 为 300 减去预算,若为负数,则记下该月
份,输出“-月份”;否则 save 加上 remain 整除 100,remain 为除以 100
的余数。
这样算下来,存储的 save 的单位是 100,则最后结果为:
save * 100 + save * 100 * 0.2 + remain
注意:
当发现有某个月份超支时,不能终止循环,因为题目还没有结束输入。
*********************************************************************/
#include <iostream>
using namespace std;
int main() {
// 剩余的钱,预算,存储的钱,超出预算的月份
int remain = 0, budget = 0, save = 0, over = 0;
bool flag = false; //标记是否已超出预算
for (int i = 1; i <= 12; i++) { // 每个月进行迭代
cin >> budget;
remain += 300 - budget;
if (!flag && remain < 0) { // 立标志,不可直接退出,影响输入完整性
over = i;
flag = true;
}
save += remain / 100;
remain %= 100;
}
if (over) cout << "-" << over;
else cout << save * 100 + save * 100 * 0.2 + remain;
return 0;
}
我是小韦同学,企者不立,跨者不行,每天进步一点点。
欢迎大家多多交流,如果发现有错误,请多指正。有疑问的同学也可以留言评论或者发邮件。
邮箱:weichangying_wcy@163.com