洛谷_P1089津津的储蓄计划

题目描述:

为了让津津学习如何储蓄,妈妈提出,津津可以把整百的钱存在她那,到了年末她会将所有储蓄加上20%还给津津。于是津津决定每个月初,在得到妈妈给的零花钱(300元)后,如果津津预计到这个月末还会多余100或者恰好100元,她就会把整百的钱存在妈妈那,剩余的钱留在自己手中。而存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。

请你根据一年内1月到12月每个月津津的预算,判断会不会出现预算不够的情况。如果不会,计算妈妈一年内帮津津存的钱加上其中20%还给津津后,津津手中会有多少钱。

例如:某月初津津手中剩余83元,津津预计这个月的花销是180元。妈妈给了津津300零花钱,津津会留下183(100 + 83)元,另外200元存在妈妈那。到了月末,津津会剩下3元。

输入格式:

12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

输出格式:

一个整数。如果在某月中出现超预算,钱不够用的情况,输出-XX表示出现这个情况的月份;否则输出到年末,津津手中会有多少钱。


题目分析:

这道题属于模拟、枚举。

输入和输出两次操作要分开,所以要用两次for,一次读入,一次处理。

因为不知道在第几月份时预算不够,所以要优先考虑月钱不够情况。

代码实现:

#include <iostream>
#include <cstring>
int main() {
	int money = 0, x[12]; // 每月剩余的钱、每月预算
	int balance = 0;	// 存款
	memset(x, 0, sizeof x / sizeof(int));	// 初始化数组, memset -> string.h
	// 读入数据
	for (int i = 0; i < 12; i++) {
		std::cin >> x[i];
	}
	// 处理数据
	for (int i = 0; i < 12; i++) {		
		int temp = 300;
        // 预算不够
		if (money + temp < x[i]) {
			std::cout << - (i + 1);
			return 0;
		}
        // 拿剩下的钱加上这个月末剩下的钱
		money = money + temp - x[i];
        // 若余钱大于等于一百,存入账内
		while (money >= 100) {
			money -= 100;
			balance += 100;
		}
	}
    // 因为12月底的余钱也算是存款,所以要加上
	std::cout << balance * 1.2 + money;

	return 0;
}

踩坑经验

	我就是因为程序最后忘记加上余钱,一直WA。
	直到去了讨论区才看出来。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值