同題: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