原题目:
张三总爱乱花钱。每个月的月初妈妈给张三300元钱,张三会预算这个月的花销,并且能做到实际的花销和预算相同。为了让张三学会对金钱的管理,妈妈提出,张三可以随时把整百的前存在她那里,到了12月31日,他会加上20%还给张三,也就是说,张三给妈妈的每一个100元,到年底都会变成120元!因此张三制定了一个存储计划:每个月的月初,在得到妈妈给的零花钱后,如果他预计到这个月的月末手中还会有多于100元或恰好100元,他就会把整百的钱存在妈妈那里,剩余的钱存在自己手里。比如11月初张三手中还有83元,妈妈留了张三300元。张三预计11月的花销是180元,那么他就会在妈妈那里存200元,自己留下183元。到了11月月末,张三手中会剩下3元钱。
张三发现这个存储计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,张三手中的钱加上这个月妈妈给的钱,不够这个月的预算。如果出现这种情况,张三将不得不在这个月省吃简用,压缩预算。
现在请你根据2019年1月到12月每个月张三的预算,判断会不会出现这种情况。如果储蓄计划实施过程中会出现某个月钱不够用的情况,输出-x,x表示出现这种情况的第一个月;如果不会,计算到2019年12月31日,妈妈将张三平时存的钱加上20%还给张三后,张三手里会有多少钱。
样例输入
290 230 280 200 300 170 130 50 90 80 200 300
样例输出1520
我的理解是张三每个月都会有三百块零花钱,但是每个月都要减去计划的预支,然后将剩余整百的钱交给母亲,于是下个月的零花钱等于上个月去除整百的零头加上母亲给的三百块,中间可能会有零头的钱加上月初给的三百块不够预支的情况发生。
namespace 张三存钱
{
internal class Program
{
static void Main(string[] args)
{
int a=0;//每月交完整百剩的钱
int c=0;//变量交换值
int d=0;//母亲收到的钱
string str=Console.ReadLine();//设定输入数据(中间用空格隔开)
string[] arry = str.Split(' ');//
int[] arry1=new int[arry.Length];
for (int i = 0;i<arry.Length ; i++)
{
arry1[i]=Convert.ToInt32(arry[i]);//将输入的数据转换成整型进行存储
}
for (int i = 0;i<arry1.Length ; i++)
{
a =c+ 300 - arry1[i];
if (a<0)//判断每月的零花钱加上三百块总数是否小于预支
{
Console.WriteLine(i+1+"月钱不够");
continue;
}
c = a % 100;
d += a / 100;
}
Console.WriteLine(d*100+25*d);
}
}
}