津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 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
整体思路:
枚举 1~12 月,看看每个月预算是多少,有没有超支,若没有超支,则将整
百的钱存到妈妈那里, 并且算出手里剩余的钱。
具体步骤:
int remain = 0; // 用来存储剩余的钱
int budget = 0; // 用来接收每个月的预算
int save = 0; // 存在妈妈那里的钱
int over = 0; // 超出预算的月份
2.定义一个 bool 变量作为标记,标记是否已超出预算,false 表示没有超
出预算,true 表示超出了预算:
bool flag = false;
3.枚举 1~12 月,对于每一个月,做以下操作:
for (int i = 1; i <= 12; i++) { // 对每个月进行操作
cin >> budget; // 输入每个月的预算
// 每个月剩余的钱 = 上个月剩余的钱 + (当月妈妈给的 300 块 - 预算)
remain += 300 - budget;
// 如果之前没有超支,并且现在剩余的钱小于 0 (说明是第一次超支)
if (!flag && remain < 0) { // 不可直接退出,影响输入完整性
over = i; // 将第一个超支的月份记下
flag = true; // 将 flag 置为 true,表示超支
}
// 存的钱 = 之前存的钱 + 剩余的钱的整百部分(这里的单位是百)
save += remain / 100;
remain %= 100; // 手里剩余的钱(存了整百剩下的)
}
4.如果超支了,则输出负号和超支的月份;否则输出所有钱:
if(over) { // 如果超支,则输出负号和超支的月份
cout << "-" << over;
} else {
// 如果没有超支,则输出所有的钱
// 所有的钱是存在妈妈那里的钱加上利息(存的钱的单位是百,记得乘以 100)
// 再加上手里剩余的钱(不够整百的部分)
cout << save * 100 + save * 100 * 0.2 + remain;
}
#include <iostream>
using namespace std;
int main() {
int remain = 0; // 用来存储剩余的钱
int budget = 0; // 用来接收每个月的预算
int save = 0; // 存在妈妈那里的钱
int over = 0; // 超出预算的月份
// 做标记,标记是否已超出预算,false 表示没有超出预算,true 表示超出了预算
bool flag = false;
for (int i = 1; i <= 12; i++) { // 对每个月进行操作
cin >> budget; // 输入每个月的预算
// 每个月剩余的钱 = 上个月剩余的钱 + (当月妈妈给的 300 块 - 预算)
remain += 300 - budget;
// 如果之前没有超支,并且现在剩余的钱小于 0 (说明是第一次超支)
if (!flag && remain < 0) { // 不可直接退出,影响输入完整性
over = i; // 将第一个超支的月份记下
flag = true; // 将 flag 置为 true,表示超支
}
// 存的钱 = 之前存的钱 + 剩余的钱的整百部分(这里的单位是百)
save += remain / 100;
remain %= 100; // 手里剩余的钱(存了整百剩下的)
}
if(over) { // 如果超支,则输出负号和超支的月份
cout << "-" << over;
} else {
// 如果没有超支,则输出所有的钱
// 所有的钱是存在妈妈那里的钱加上利息(存的钱的单位是百,记得乘以 100)
// 再加上手里剩余的钱(不够整百的部分)
cout << save * 100 + save * 100 * 0.2 + remain;
}
return 0;
}