小花一家人租車去郊遊,租車一天的費用為 100 元,租車當日和車輛歸還日皆計算在內。
由於租車公司剛剛開幕,為了吸引更多顧客,在開幕期間推出優惠租車方案:租車天數每 10
天送 1 天,也就是說租 10 天只需要付 9 天的價錢、租 20 天只需付 18 天的費用,以
此類推。
小花排定好出去玩的日期後,請你幫他們一家人計算總租車費用。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入總共兩行,第一行有兩個整數 M1 和 D1 (1 ≤ M1 ≤ 12,1 ≤ D1 ≤ 31) 表示租車日 期,第二行有兩個整數 M2 和 D2 (1 ≤ M2 ≤ 12,1 ≤ D2 ≤ 31)表示車輛歸還日期。保證租車期間不會跨年份且 ,其中二月份固定以 28 天計算。 | 輸出一行為總租車費用。 |
7 16 7 31 | 1500 |
2 13 4 1 | 4400 |
11 18 11 27 | 900 |
10 29 11 17 | 1800 |
解題思路
將兩個日期都換算成天數,並進行相減後 +1,因為歸還日也算。將天數 -= 天數/10 之後輸出 天數*100。
範例程式碼-ZeroJudge K847: 租車費用 (Rent)
#include <iostream>
#include <map>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
map<int, int>MAP;
MAP[0] = 0;
MAP[1] = 31;
MAP[2] = MAP[1] + 28;
MAP[3] = MAP[2] + 31;
MAP[4] = MAP[3] + 30;
MAP[5] = MAP[4] + 31;
MAP[6] = MAP[5] + 30;
MAP[7] = MAP[6] + 31;
MAP[8] = MAP[7] + 31;
MAP[9] = MAP[8] + 30;
MAP[10] = MAP[9] + 31;
MAP[11] = MAP[10] + 30;
MAP[12] = MAP[11] + 31;
int M, D;
cin >> M >> D;
int a = MAP[M-1]+D;
cin >> M >> D;
int b = MAP[M-1]+D;
if (a > b) b += 365;
int diff = b - a + 1;
diff -= diff/10;
cout << diff*100 << "\n";
}
//ZeroJudge K847
//Dr. SeanXD