1. 程式人生 > >SJTUOJ 1010. 二哥的儲蓄計劃

SJTUOJ 1010. 二哥的儲蓄計劃

題目內容

Description
二哥的零花錢一直都是自己管理。每個月的月初媽媽給二哥300元錢,二哥會預算這個月的花銷,並且總能做到實際花銷和預算的相同。

為了讓二哥學習如何儲蓄,媽媽提出,二哥可以隨時把整百的錢存在她那裡,到了年末她會加上20%還給二哥。因此二哥制定了一個儲蓄計劃:每個月的月初,在得到媽媽給的零花錢後,如果她預計到這個月的月末手中還會有多於100元或恰好100元,她就會把整百的錢存在媽媽那裡,剩餘的錢留在自己手中。

例如11月初二哥手中還有83元,媽媽給了二哥300元。二哥預計11月的花銷是180元,那麼她就會在媽媽那裡存200元,自己留下183元。到了11月月末,二哥手中會剩下3元錢。

二哥發現這個儲蓄計劃的主要風險是,存在媽媽那裡的錢在年末之前不能取出。有可能在某個月的月初,二哥手中的錢加上這個月媽媽給的錢,不夠這個月的原定預算。如果出現這種情況,二哥將不得不在這個月省吃儉用,壓縮預算。

現在請你根據2009年1月到12月每個月二哥的預算,判斷會不會出現這種情況。如果不會,計算到2009年年末,媽媽將二哥平常存的錢加上20%還給二哥之後,二哥手中會有多少錢。

Input Format
輸入包括12行資料,每行包含一個小於350的非負整數,分別表示1月到12月二哥的預算。

Output Format
輸出包括一行,這一行只包含一個整數。如果儲蓄計劃實施過程中出現某個月錢不夠用的情況,輸出-X,X表示出現這種情況的第一個月;否則輸出到2009年年末二哥手中會有多少錢。

Sample Input
290
230
280
200
300
170
340
50
90
80
200
60
Sample Output
-7
Sample Input
290
230
280
200
300
170
330
50
90
80
200
60
Sample Output
1580

程式碼實現

#include <stdio.h>
int main(){
  int i,n,s=0,l=0;
  for(i = 0;i < 12;i++){
    scanf("%d",&n);
    if(300 + l - n < 0){
      printf("%d",-i-1);
      return 0
; } else{ s += (300 + l - n); l = s % 100; s -= l; } } printf("%d",(int)(s*1.2+l)); return 0; }

時間:6ms 空間:9036kb