QQ帐户的申请与登陆

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

输入格式:

输入首先给出一个正整数N(≤10^5,随后给出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”。

输入样例:

5
L 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
L 1234567890 myQQ@qq
L 1234567890 myQQ@qq.com

输出样例:

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

代码如下(非散列)

#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main(){
map<string,int> qq; // 储存qq密码在vector里的位置
vector<string> vi(1); // 储存qq密码
string num,password;
char state;
int N,tag=1; cin>>N;
while(N--){
cin>>state>>num>>password;
if(state=='L'){
if(qq[num]==0) printf("ERROR: Not Exist\n");
else if(vi[qq[num]]==password)
printf("Login: OK\n");
else
printf("ERROR: Wrong PW\n");
}
else{
if(qq[num]!=0)
printf("ERROR: Exist\n");
else{
qq[num]=tag++;
vi.push_back(password);
printf("New: OK\n");
}
}
}
return 0;
}

代码如下(散列)

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
char state;
typedef struct node* list;
struct node{
char qq[11];
char password[17];
list next;
};
typedef struct hashtable* hashtbl;
struct hashtable{
int tblsize;
list heads;
};
int nextprime(int N){
N=N%2?N+2:N+1;
int i;
while(1){
for(i=sqrt(N);i>2;i--)
if(!(N%i)) break;
if(i==2) break;
else N=N+2;
}
return N;
}
hashtbl createtbl(int N){
hashtbl h=new hashtable();
h->tblsize=nextprime(N);
h->heads=new node[h->tblsize];
for(int i=0;i<h->tblsize;i++)
h->heads[i].next=NULL;
return h;
}
int Hash(int m,int tblsize){
return m%tblsize;
}
list find(hashtbl h,char num[11]){
int pos=Hash(atoi(num+4),h->tblsize);
list p=h->heads[pos].next;
while(p!=NULL){
if(strcmp(p->qq,num)==0) break;
p=p->next;
}
return p;
} bool Insert(hashtbl h,char num[11],char password[17]){
list p=find(h,num);
if(p!=NULL) {
if(state=='N')
printf("ERROR: Exist\n");
else if(strcmp(p->password,password)==0)
printf("Login: OK\n");
else
printf("ERROR: Wrong PW\n");
return false;
}
else {
if(state=='N')
printf("New: OK\n");
else{
printf("ERROR: Not Exist\n");
return false;
}
int pos=Hash(atoi(num+4),h->tblsize);
p=new node();
strcpy(p->password,password);
strcpy(p->qq,num);
p->next=h->heads[pos].next;
h->heads[pos].next=p;
return true;
}
}
int main(){
int N;
scanf("%d",&N);
hashtbl h=createtbl(N);
char num[11],password[17];
for(int i=0;i<N;i++){
getchar();
scanf("%c %s %s",&state,num,password);
Insert(h,num,password);
}
return 0;
}

QQ帐户的申请与登陆的更多相关文章

  1. PTA 11-散列3 QQ帐户的申请与登陆 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/723 5-15 QQ帐户的申请与登陆   (25分) 实现QQ新帐户申请和老帐户登陆的简 ...

  2. 7-15 QQ帐户的申请与登陆

    7-15 QQ帐户的申请与登陆(25 分) 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10​5​​),随后给 ...

  3. 第7章学习小结 不使用STL-map过实践题:QQ帐户的申请与登陆

    目录: 一:查找的概念与术语 二:折半查找 三:二叉排序树 四:平衡二叉树 五:B-树 六:B+树 七:散列表 八:实践题:QQ帐户的申请与登陆 九:自我总结 一.查找的概念与术语 (一)查找表 查找 ...

  4. 浙江大学PAT上机题解析之5-05. QQ帐户的申请与登陆

    实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式说明: 输入首先给出一个正整数N(<=105),随后给出N行指令.每行指令的格式为:“命令符 ...

  5. 5-15 QQ帐户的申请与登陆 (25分) HASH

    实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数NN(\le 10^5≤10​5​​),随后给出NN行指令.每行指令的格 ...

  6. QQ帐户的申请与登陆-(字符串操作)

    题目: 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10^5),随后给出N行指令.每行指令的格式为:“命令符( ...

  7. 5-05. QQ帐户的申请与登陆(25)(map运用)(ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/5-05 实现QQ新帐户申请和老帐户登陆的简化版功能. 最大挑战是:据说如今的QQ号码已经有10位数了. 输入格式说明: ...

  8. 【PTA 天梯赛训练】QQ帐户的申请与登陆(散列+set模拟)

    实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10^5),随后给出N行指令.每行指令的格式为:“命令符(空格)Q ...

  9. QQ帐户的申请与登陆(25 分)

    实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤),随后给出N行指令.每行指令的格式为:“命令符(空格)QQ号码( ...

随机推荐

  1. IDEA hadoop MapReduce 环境配置

    1.下载,安装,配置好Hadoop 2.在IDEA中执行MapReduc 配置: 这里将JAR包加入: JAR包是:/usr/local2/hadoop/share/hadoop 目录下:直接右边+以 ...

  2. MySql 5.7 Archive 版本安装失败 解决过程

    下载地址 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 按照网络教程: 创建my.ini 文件,并填写配置内容: [mysql] # ...

  3. 【FFmpeg】FFmpeg常用基本命令(转载)

    转自:http://www.cnblogs.com/dwdxdy/p/3240167.html 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an outp ...

  4. bzoj 3942: [Usaco2015 Feb]Censoring【kmp+栈】

    好久没写kmp都不会写了-- 开两个栈,s存当前串,c存匹配位置 用t串在栈s上匹配,栈每次入栈一个原串字符,用t串匹配一下,如果栈s末尾匹配了t则弹栈 #include<iostream> ...

  5. bzoj 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富【记忆化搜索+剪枝】

    c[x][y]为从(x,y)到(n,m)的最大值,记忆化一下 有个剪枝是因为y只能+1所以当n-x>m-y时就算x也一直+1也是走不到(n,m)的,直接返回0即可 #include<ios ...

  6. [App Store Connect帮助]六、测试 Beta 版本(3.3)管理测试员:查看测试员信息

    如果您使用“TestFlight Beta 版测试”,您可以查看关于测试员的信息,并衡量测试员的参与度. 必要职能:“帐户持有人”职能.“管理”职能.“App 管理”职能.“开发者”职能或“营销”职能 ...

  7. JAVA POI的使用

    最近开发遇到了要通过Java处理Excel文件的场景,于是乎在网上了解了一番,最后自己做了个demo,已上传gitee:https://gitee.com/github-26930945/JavaCo ...

  8. ACM_寒冰王座(完全背包)

    寒冰王座 Time Limit: 2000/1000ms (Java/Others) Problem Description: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票) ...

  9. document.write()、onclick="alert(xxx)、innerHTML、image.src.match("xxx")、id2.style.color="blue";、isNaN(id2)、document.write("糟糕!文档消失了。")、alert(id2.outerHTML)、id2.className="id06";、onclick="return registe"

    <html> <head> <meta charset="utf-8"> <title>javascript</title&g ...

  10. 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8、0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)

    不多说,直接上干货! 至于为什么,要写这篇博客以及安装Kafka-manager? 问题详情 无奈于,在kafka里没有一个较好自带的web ui.启动后无法观看,并且不友好.所以,需安装一个第三方的 ...