ZeroJudge E505: Nice Licence Plates

同題:UVa 12602 – Nice Licence Plates

Alberta 的車牌當前格式為 ABC-0123 (三個字母後跟著四個數字)。
如果第一部分的值和第二部分的值之間的絕對差最大為100,則此車牌是「nice」。
第一部分的值計算為以 26 為底的數字(其中 [A~Z] 中的數字) 的值。
例如,如果第一部分是「ABC」,則其值為 28 (0 * (26^2)) + (1 * (26^1)) + (2 * (26^0))。
因此,「ABC-0123」車牌很好,因為 |28-123| ≤ 100。
我們將會給定車牌號碼列表,您的程式要確認車牌是否「nice」或者「not nice」。

範例測資

範例輸入範例輸出
輸入的第一行包含整數 N (1 ≤ N ≤ 100),即車牌的數量。
接下來 N 行,每行包含一個車牌,格式為「LLL-DDDD」。
對於每個車牌,輸出「nice」或者「not nice」。
2
ABC-0123
AAA-9999
nice
not nice

解題思路

將前段跟後段的數字設定為不同變數。使用 For迴圈 將英文字母的那一段進行相加,這邊要注意是「英文字母順序*(26^位數倒轉)」,題目沒有寫的很清楚要注意。

範例程式碼-ZeroJudge E505: Nice Licence Plates

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    for (int i = 0; i<N; i++)
    {
        string str;
        cin >> str;
        int one = 0, two, count = 2;
        for (int i = 0; i<3; i++)
        {
            one += int(str[i] - 'A') * pow(26, count);
            count--;
        }
        two = stoi(str.substr(4, str.length()));
        if (abs(one - two) <= 100)
        {
            cout << "nice\n";
            continue;
        }
        cout << "not nice\n";
    }
}

//ZeroJudge E505
//Dr. SeanXD

發佈留言