一、题目链接
http://noi.openjudge.cn/ch0105/22/
二、解题思路
◎ 根据题意,当月的结余=上个月的结余+300-当月的花销,并需要从中扣除整百的钱存到妈妈那里,增加总积蓄;
◎ 循环输入每个月的花销:
→ 计算当月的结余;
→ 如果当月的结余为负,记录当月月份的负值,退出循环;
否则,从当月的结余中扣除整百的钱,用于增加总积蓄;
◎ 循环结束后:
→ 如果存在某个月的结余为负,输出该月月份的负值;
否则,输出总积蓄的1.2倍与12月份结余之和。
三、实施步骤
◎ 首先,定义四个int类型的整数cost、save、balance、ans,分别代表每个月的花销、每个月能存的整百的钱、每个月的结余、总积蓄,初
始时balance、ans均为0;
◎ 其次,通过标记i代表月份编号,i从1开始,到12为止,更新步长为1,循环处理如下:
→ 输入当月的花销cost,令balance=balance+300- cost;
→ 如果balance<0:令ans=-i,break;
否则:令save=100*(balance/100),balance=balance-save,ans=ans+save;
◎ 最后:
→ 如果ans<0:输出ans;
否则:输出(int)(1.2*ans+balance)。
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int cost;
int save;
int balance = 0;
int ans = 0;
for (int i = 1; i <= 12; i++)
{
cin >> cost;
balance = balance + 300 - cost;
if (balance < 0)
{
ans = -i;
break;
}
else
{
save = 100 * (balance / 100);
balance = balance - save;
ans = ans + save;
}
}
if (ans < 0)
{
cout << ans;
}
else
{
cout << (int) (1.2 * ans + balance);
}
return 0;
}