ZeroJudge N369: 免費仔

各大網路平台為了推銷自己的服務,會給予每支帳號一些免費試用功能,當試用期過了,就必須要付費使用,有的人為了不想付錢,會創建許多新的帳號來使用免費的功能,這些人被網友親切的稱之為「免費仔」。

範例測資

範例輸入範例輸出
輸入的第一行有一個正整數 N (1 <= N <= 2000),接下來下有 N 行註冊操作,每行包含兩個以空白隔開的字串 A 和 B,A 是註冊這個帳號時所使用的 Gmail,B 是本次註冊用戶輸入的用戶名,輸入字串包含英文字母、數字與符號。對於每一筆註冊操作,如果該信箱 A 尚未被使用,請輸出「welcome, 」加上用戶名 B;反之,請輸出用戶名 B 加上「 account has been used」,見範例輸出。
4
[email protected] HiHi
@gmail.com alex0301
@gmail.com HiHi
NotGmail M_SQRT
welcome, HiHi
welcome, alex0301
HiHi account has been used
welcome, M_SQRT

解題思路

使用 Map 來判斷每一個信箱有沒有出現過,如果 Map[信箱] 是 0 的話,代表這個信箱沒有被註冊過,如果 Map[信箱] 不是 0,就代表這個信箱已經被註冊過了。每次判斷完之後都要記得將 Map[信箱]++。

範例程式碼-ZeroJudge N369: 免費仔

#include <iostream>
#include <map>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    map<string, int>MAP;
    for (int i = 0; i<N; i++)
    {
        string a, b;
        cin >> a >> b;
        if (MAP[a] == 0) cout << "welcome, " << b << "\n";
        else cout << b << " account has been used\n";
        MAP[a]++;
    }
}

//ZeroJudge N369
//Dr. SeanXD

發佈留言