社区讨论

╥﹏╥结果正确,但每个检测点都是WA

P1089[NOIP 2004 提高组] 津津的储蓄计划参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo23akr0
此快照首次捕获于
2023/10/23 07:18
2 年前
此快照最后确认于
2023/11/03 07:38
2 年前
查看原帖
初学,思路有一点点小奇怪
看到很多人用数组,但我试图用最基础朴素的思想去解决这个问题
思路如下:
变量设置:预算budget、
每个月拿到300之后的手上有的钱have用于与budget比对、
存在妈妈那的钱save,
计数器count、储存第一次余额不足月份month、循环读取数据数量m=12
流程:
读取budget
将budget与have比对
如果budget小,计算下一轮开始前的save与have
save由差值对100地板除法再乘以100得到,加到前一次save中
而have是减去save和budget,再领取300元
比较后若余额不足,have=300,下个月再说
这个时候记录最小月份
于是每个测试点都是WA救命qwq
CPP
#include<iostream>
using namespace std;
int main()
{
	int budget,have=300,save=0,count,month,m=12;
	for(int i=0;i<m;i++)//读取12个数据
	{
		cin>>budget;
		if(budget<=have)//比较这个月钱够不够
		{
			save+=((have-budget)/100)*100;
			have=have-budget-((have-budget)/100)*100+300;//为下一轮准备好数据
		}
		else//钱不够
		{
			have=300;
			count+=1;//每次钱不够,计数器都记得
			if(count==1)//但是第一次会把相应的月份告诉我
				month=i+1;
		}
		/*cout<<save<<" "<<have<<" "<<endl;*/
	}//这是输出中间变量调试用的
	if(count!=0)
		cout<<"-"<<month;//按照题目要求输出结果
	else
		cout<<have+save*1.2-300;
	return 0;		
}

回复

5 条回复,欢迎继续交流。

正在加载回复...