ZeroJudge K847: 租車費用 (Rent)

小花一家人租車去郊遊,租車一天的費用為 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

發佈留言