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

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

输入格式:

输入首先给出一个正整数NN(\le 10^5≤10?5??),随后给出NN行指令。每行指令的格式为:“命令符(空格)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 [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<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;

#define MAXN 17
typedef long long LL;

typedef struct node
{
    LL id;
    char password[MAXN];
    struct node* next;
}*List;

typedef struct tb
{
    LL size;
    List *list;
}*Hashlist;
int NextPrim(int x)
{
    int j;
    for(int t=x;;t++)
    {
        for(j=2;j*j<=t;j++)
            if(t%j==0)
                break;
        if(j*j>t)
            return t;
    }
}
int Hash(LL id,LL size)
{
    //cout<<id%size<<endl;
    return id%size;
}
Hashlist Init(LL size)
{
    Hashlist H = (Hashlist)malloc(sizeof(tb));
    H->size = size;
    H->list = (List*)malloc(sizeof(List)*H->size);
    for(int i=0;i<H->size;i++)
    {
        H->list[i] = (List)malloc(sizeof(node));
        H->list[i]->next = NULL;
    }
    return H;
}
List Find(LL id,char pw[],Hashlist H)
{
    List t = H->list[Hash(id,H->size)];
    List p=t->next;
    while(p!=NULL && p->id!=id)
        p = p->next;
    return p;
}
void Insert(LL id,char pw[],Hashlist H)
{
    List f = Find(id,pw,H);
    if(f==NULL)
    {
        List t = H->list[Hash(id,H->size)];
        List tmp = (List)malloc(sizeof(node));
        tmp->id = id;
        strcpy(tmp->password,pw);
        tmp->next = t->next;
        t->next = tmp;
        printf("New: OK\n");
    }
    else
    {
        printf("ERROR: Exist\n");
    }
}
void Login(LL id,char pw[],Hashlist H)
{
    List f = Find(id,pw,H);
    if(f==NULL)
    {
        printf("ERROR: Not Exist\n");
    }
    else
    {
        if(strcmp(pw,f->password))
            printf("ERROR: Wrong PW\n");
        else
            printf("Login: OK\n");
    }
}
int main()
{
    int n;
    LL tmp;
    char flag,pw[MAXN];
    scanf("%d",&n);
    Hashlist H = Init(NextPrim(n));
    for(int i=0;i<n;i++)
    {
        getchar();
        scanf("%c%lld%s",&flag,&tmp,pw);
        if(flag == ‘N‘)
            Insert(tmp,pw,H);
        else
            Login(tmp,pw,H);
    }
}
时间: 2024-10-25 22:47:00

5-15 QQ帐户的申请与登陆 (25分)的相关文章

PAT QQ帐户的申请与登陆 STL-MAP的应用

链接: QQ帐户的申请与登陆 #include<iostream> #include<cstdio> #include<cstring> #include<map> using namespace std; int main() { int n; char ch; string str1,str2; map<string,string>mapp; map<string,string>::iterator ii; scanf("

QQ帐户的申请与登陆

QQ帐户的申请与登陆 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10^5,随后给出N行指令.每行指令的格式为:"命令符(空格)QQ号码(空格)密码".其中命令符为"N"(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码:命令符为"L"(代表Login)时表示是老帐户登陆,后面是登陆信息.QQ号码为一个不超过10位.但大于1000(据说QQ老总

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

7-15 QQ帐户的申请与登陆(25 分) 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10?5??),随后给出N行指令.每行指令的格式为:"命令符(空格)QQ号码(空格)密码".其中命令符为"N"(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码:命令符为"L"(代表Login)时表示是老帐户登陆,后面是登陆信息.QQ号码为一个不超过10位.

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

题目链接:http://pat.zju.edu.cn/contests/ds/5-05 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式说明: 输入首先给出一个正整数N(<=105),随后给出N行指令.每行指令的格式为:"命令符(空格)QQ号码(空格)密码".其中命令符为"N"(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码:命令符为"L"(代表Login)时表示是老帐户

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

实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤),随后给出N行指令.每行指令的格式为:"命令符(空格)QQ号码(空格)密码".其中命令符为"N"(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码:命令符为"L"(代表Login)时表示是老帐户登陆,后面是登陆信息.QQ号码为一个不超过10位.但大于1000(据说QQ老总的号码是1001)的整数.密

苹果App Store开发者帐户从申请,验证,到发布应用(4)

苹果App Store应用内支付(In-App Purchase) IAP简介 IAP的全称是In-App Purchase,应用内付费.这种业务模式允许用户免费下载试用,对应用内提供的商品选择消费,比如购买游戏道具,购买游戏等级等等.相比完全收费的应用而言,应用内付费给用户试用的机会,不会让优秀的应用因为缺乏用户的认知而丧失消费者:而且对于开发商,也不需要为了让用户试用而单独发布一款免费的精简版本. 下面详细介绍一下应用内支付的详细步骤: 1.点开应用,点击manager in-app pur

苹果App Store开发者帐户从申请,验证,到发布应用(1)

app store为开发者提供四种类型的申请: 个人ios开发者计划$99/年 公司ios开发者计划$99/年 企业ios开发者计划$299/年 高校ios开发者计划免费 在这里主要介绍一下公司ios开发者计划,只有利用个人和公司ios开发者计划证书开发的应用,才能上app store.企业开发者计划主要是为本公司开发软件,并安装到本公司的硬件设备上,不能上app store.下面主要介绍一下公司ios开发者计划的申请. 苹果App Store申请帐号: 1.打开连接:http://develo

苹果App Store开发者帐户从申请,验证,到发布应用(2)

app store付费 上面已经介绍了app store id的注册了,下面在注册基础上,介绍一下app store的付费. 在上面注册成功之后,会收到一封邮件. 1.收到邮件Thank You for Submitting Your Enrollment Dear ****, Thank you for your interest in the iOS Developer Program. Your enrollment request has been received and is bei

苹果App Store开发者帐户从申请,验证,到发布应用(3)

应用上架的流程和操作步骤 下面主要介绍一下,上架应用相关流程和相关的操作步骤: 1.登录itunes,https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa 2.点击管理"Manage Your Applications" 3.点击添加新应用 4.如果是第一次添加应用,而且没有添加过证书.需要添加证书. 添加证书: 登录http://developer.apple.com/membercenter/index.actio