1. 程式人生 > >POJ 2586-暴力水題

POJ 2586-暴力水題

題目:考驗英語和語文能力。

借鑑於:不知道是誰寫的不太詳細的題目解析;詳細版我寫在後面了。

>錯誤分析:不想讀題。題目出的有點不夠清楚。

題目拆解:

1)12個月的盈虧分析

2)每一個月要麼是盈要麼是虧,不同月份盈利額不會改變;虧損額也不會改變。(照應INPUT)

3)每連續的5個月一定是虧損的

4)求12個月總的算起來,盈利多少?如果虧損,虧損最少為多少?

num  需要多少個deficit才能使得5個月中deficit>surplus  

123455554321   重複次數 ---line1
123456789012   月份序號 ---line2
-----  -----
 ----------
  ---++---
   -++++-
543214512345    按照虧損次數進行的分類 ---line3
>= 5
< 5
1
2
3
4

如上圖,如果1/5的虧損,那麼line3的所有“1”就是必須虧損的月份;2/5,那麼就是所有的“2”,有四次。

程式碼:

#include <iostream>

using namespace std;

int main(){
    int surplus, deficit;
    int cnt;
    while(cin >> surplus >> deficit){
        cnt = 0;
        if(deficit > surplus*4){
            cnt = surplus*10 - deficit*2;
        }
        else if(2*deficit > surplus*3){
            cnt = surplus*8 - deficit*4;
        }
        else if(3*deficit > surplus*2){
            cnt = surplus*6 - deficit*6;
        }
        else if(4*deficit > surplus){
            cnt = surplus*3 - deficit*9;
        }
        else {//5 deficits
            cnt = -1;
        }

       if(cnt < 0) cout << "Deficit\n";
       else cout << cnt << '\n';
    }

    return 0;
}
// num is 需要多少個deficit才能使得5個月中deficit>surplus
// 123455554321
// 123456789012
// -----  -----
//  ----------
//   ---++---
//    -++++-
// 543214512345
// >= 5
// < 5
// 1
// 2
// 3
// 4