津津的储蓄计划OJ

预算问题的三种情况分析

感觉题目想表达的意思有点问题——什么叫“分别表示11月到12月津津的预算”?

这里应该是“分别表示1月到12月每个月的预算”。

可以分为3种情况讨论:

        第一种是剩余的钱多余100元或恰好100元;

        第二种是钱不够用;

        第三种是有剩余的钱但是不够100元的。

然后再分别对每种情况进行逻辑分析即可。

#include <stdio.h>
int main()
{
	int q=300;  //每月固定的300块
	int s=0,x=0,cnt=0,y=0;  //s表示津津手上的钱,x表示每个月的预计开销,cnt表示在妈妈那里存的钱,y用于记录第一次不够开销的月 
	for(int i=1;i<=12;i++)
	{
		s+=q;  //每个月月初手上的钱加300
		scanf("%d",&x);  //读入开销
		if(s-x>=100) //表示这个月可以在妈妈那里存钱
		{  
			int t=(s-x)/100;  // t表示除去开销后可以存在妈妈那里的100的个数
			cnt+=t*100;  // cnt表示在妈妈那里存的钱
			s=s-x-t*100;  // s减去开销,减去在妈妈那里存的钱,等于最后月末剩的钱
		} 
		else if(s-x<0) //表示这个月的钱不够开销
		{ 
			s=0;  //月末省吃俭用s归零
			if(y==0) //第一次不够开销
			{  
				y=-i;  //用 y记录第一次不够开销的月
		    }
		} 
		else //这个月的钱够开销但没有钱存到妈妈那里
		{ 
			s-=x;  //直接减去开销即可
		}
	}
	if(y==0) //没有出现不够开销的月
	{ 
	    printf("%d\n",(int)(s+cnt*1.2));
	} 
	else //存在不够开销的月
	{  
		printf("%d",y);
	}
	return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值