1. 程式人生 > >小明的存錢計劃 南陽acm54

小明的存錢計劃 南陽acm54

light == 發現 可能 過程 內存 來源 AR display

小明的存錢計劃

時間限制:3000 ms | 內存限制:65535 KB 難度:2
描述

小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。
為了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裏,到了年末她會加上20%還給小明。因此小明制定了一個儲蓄計劃:每個月的月初,在 得到媽媽給的零花錢後,如果他預計到這個月的月末手中還會有多於100元或恰好100元,他就會把整百的錢存在媽媽那裏,剩余的錢留在自己手中。
例如11月初小明手中還有83元,媽媽給了小明300元。小明預計11月的花銷是180元,那麽他就會在媽媽那裏存200元,自己留下183元。到了11月月末,小明手中會剩下3元錢。
小明發現這個儲蓄計劃的主要風險是,存在媽媽那裏的錢在年末之前不能取出。有可能在某個月的月初,小明手中的錢加上這個月媽媽給的錢,不夠這個月的原定預算。如果出現這種情況,小明將不得不在這個月省吃儉用,壓縮預算。
現在請你根據2010年1月到12月每個月小明的預算,判斷會不會出現這種情況。如果不會,計算到2010年年末,媽媽將小明平常存的錢加上20%還給小明之後,小明手中會有多少錢。

輸入
第一行輸入一個整數N,表示測試數據的組數(N<=10)
每組測試數據輸入12行數據,每行包含一個小於350的非負整數,分別表示1月到12月小明的預算。

輸出
每組輸出包括一行,這一行只包含一個整數。如果儲蓄計劃實施過程中出現某個月錢不夠用的情況,輸出-X,X表示出現這種情況的第一個月;否則輸出到2010年年末小明手中會有多少錢(如果是小數,請四舍五入到整數位)。

樣例輸入
1
290
230
280
200
300
170
340
50 
90 
80 
200
60
樣例輸出
-7
來源
網絡
上傳者
hzyqazasdf
已經ac,具體看代碼,通俗易懂

#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i,j,sum,max,cut,ans,k;
int a[12],b[12]={0};
sum=0;
max=0;
k=0;
for(i=0;i<12;i++)
{
scanf("%d",&a[i]);
cut=300-a[i]; //用來計算月初麻麻給的錢-去當月預算的錢
max+=cut; //用來保存除去預算的錢剩下的錢
if(max<0) //如果當月錢不夠,記下來並輸出出現這種情況的第一個月
{
b[i]=i+1;
k=1;
}
else
{
while(max>=100) //大於100就給麻麻
{
sum+=100;
max-=100;
}
}
}
ans=sum+max+(sum*0.2);
if(k==0)
printf("%d\n",ans);
else
{
for(i=0;i<12;i++)
{
if(b[i]!=0)
{
printf("-%d\n",b[i]);
break;
}
}
}
}
return 0;
}

小明的存錢計劃 南陽acm54