一、题目链接
http://noi.openjudge.cn/ch0105/22/
二、解题思路
◎ 当月的结余=上个月的结余+300-当月的花销,并需要从中扣除整百的钱存到妈妈那里,增加总积蓄;
◎ 循环输入每个月的花销:
▲ 计算当月的结余;
▲ 如果当月的结余为负,记录当月月份的负值,退出循环;
▲ 否则,从当月的结余中扣除整百的钱,用于增加总积蓄;
◎ 循环结束后:如果存在某个月的结余为负,输出该月月份的负值,否则输出总积蓄的1.2倍与12月份结余之和。
三、实施步骤
◎ 定义四个int类型的整数cost、save、balance=0、ans=0,分别代表每个月的花销、每个月能存的整百的钱、每个月的结余、总积蓄;
◎ 通过标记i代表月份编号,i从1开始,到12为止,递增步长为1,循环处理如下:
▲ 输入当月的花销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:输出ans;
else:输出(int)(1.2*ans+balance)。
四、Java程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int cost;
int save;
int balance = 0;
int ans = 0;
for (int i = 1; i <= 12; i++) {
cost = input.nextInt();
balance = balance + 300 - cost;
if (balance < 0) {
ans = -i;
break;
}
else {
save = 100 * (balance / 100);
balance = balance - save;
ans = ans + save;
}
}
if (ans < 0) {
System.out.print(ans);
}
else {
System.out.print((int) (1.2 * ans + balance));
}
}
}