09-散列2. QQ帐户的申请与登陆(25)

来源:互联网 发布:muse cc mac 破解 编辑:程序博客网 时间:2024/04/29 10:45

实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。

输入格式说明:

输入首先给出一个正整数N(<=105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

输出格式说明:

针对每条指令,给出相应的信息:

1) 若新申请帐户成功,则输出“New: OK”;
2) 若新申请的号码已经存在,则输出“ERROR: Exist”;
3) 若老帐户登陆成功,则输出“Login: OK”;
4) 若老帐户QQ号码不存在,则输出“ERROR: Not Exist”;
5) 若老帐户密码错误,则输出“ERROR: Wrong PW”。

样例输入与输出:

序号输入输出1
5L 1234567890 myQQ@qq.comN 1234567890 myQQ@qq.comN 1234567890 myQQ@qq.comL 1234567890 myQQ@qqL 1234567890 myQQ@qq.com
ERROR: Not ExistNew: OKERROR: ExistERROR: Wrong PWLogin: OK

提交代码

——————————

直接上map就可以了,就比较简单的了、

对于map的操作,下面会转载一篇博文,学习下。

代码如下。


#include <iostream>#include <map>#include <cstring>using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {int N;map<string, string> mp;cin>>N;string s1,s2,s3;for(int i=0; i<N; i++){cin>>s1>>s2>>s3;if(s1=="N"){if(mp.find(s2)==mp.end()){mp.insert(make_pair(s2,s3));printf("New: OK\n");}else{printf("ERROR: Exist\n");}}else if(s1=="L"){if(mp.find(s2)==mp.end()){printf("ERROR: Not Exist\n");}else//存在{map<string,string>::iterator it=mp.find(s2);if(it->second == s3){printf("Login: OK\n");}else{printf("ERROR: Wrong PW\n");}}}}return 0;}




0 0
原创粉丝点击