1. 程式人生 > >QQ賬戶的申請與登入

QQ賬戶的申請與登入

 

實現QQ新帳戶申請和老帳戶登陸的簡化版功能最大挑戰是:據說現在的QQ號碼已經有10位數了。

輸入格式

輸入首先給出一個正整數N(≤105105),隨後給出Ñ行指令每行指令的格式為:“命令符(空格)QQ號碼(空格)密碼”其中命令符為“N”(代表新)時表示要新申請一個QQ號,後面是新帳戶的號碼和密碼;命令符為“L”(代表登入)時表示是老帳戶登陸,後面是登陸資訊。QQ號碼為一個不超過10位密碼為不小於6位,不,但大於1000(據說QQ老總的號碼是1001)的整數。超過16位,且不包含空格的字串。

輸出格式

針對每條指令,給出相應的資訊:
1)若新申請帳戶成功,則輸出“新:好”;
2)若新申請的號碼已經存在,則輸出“錯誤:存在”;


3)若老帳戶登陸成功,則輸出“登入:OK”;
4)若老帳戶QQ號碼不存在,則輸出“錯誤:不存在”;
5)若老帳戶密碼錯誤,則輸出“錯誤:錯誤的PW”。

輸入樣例

5
L 1234567890 [email protected]
N 1234567890 [email protected]
N 1234567890 [email protected]
L 1234567890 [email protected]
L 1234567890 [email protected]

輸出樣例

ERROR: Not Exist
New: OK
ERROR: Exist
ERROR: Wrong PW
Login: OK

 

#include <bits/stdc++.h>
using namespace std;

struct instruction
{
    char ch;
    string qq,code; //QQ號碼和密碼
};

int main()
{
    int n;
    cin >> n;
    instruction s[n];
    map<string,string> QQ;    //用來存放賬號和密碼
    for(int i=0;i<n;i++)
    {
        cin >> s[i].ch >> s[i].qq >> s[i].code;
        switch(s[i].ch)
        {
            case 'N':   //'N'表示要新申請一個QQ號
                if(QQ.find(s[i].qq)==QQ.end())     //若賬號不存在
                {
                    QQ[s[i].qq] = s[i].code;  //QQ存放使用者的賬戶密碼
                    cout << "New: OK" << endl;  //若新申請帳戶成功,則輸出"New: OK"
                }
                else    //若賬號已存在
                {
                    cout << "ERROR: Exist" << endl;    //若新申請的號碼已經存在,則輸出"ERROR: Exist"
                }
                break;
            case 'L':   //'L'表示是老使用者登陸
                if(QQ.find(s[i].qq)==QQ.end())
                {
                    cout << "ERROR: Not Exist" << endl;     //若老帳戶QQ號碼不存在,則輸出"ERROR: Not Exist"
                }
                else
                {
                    if(QQ[s[i].qq]==s[i].code)    //判斷老賬戶輸入的密碼是否正確
                    {
                        cout << "Login: OK" << endl;     //若老帳戶登陸成功,則輸出"Login: OK"
                    }
                    else
                    {
                        cout << "ERROR: Wrong PW" << endl;     //若老帳戶密碼錯誤,則輸出"ERROR: Wrong PW"
                    }
                }
                break;
            default: break;
        }
    }
    return 0;
}