人間夜行

一切の有為の法 夢幻泡影の如し

RQNOJ 518 [NOIP09]潜伏者

| 评论

//此题坑人之处在于,明文密文必须“互相”对应,既不重复,也不遗漏。
//从rq的测试数据来看,如果没有考虑这一点,就有一个点通不过。
#include <stdio.h>
#include <string.h>
int main()
{
    char f[100],s[100];
    scanf("%s",f);
    scanf("%s",s);
    char dy[26];  //保存对应表 
    int i;
    for(i=0;i<26;i++) dy[i]=0;
    int sta=1;   //保存退出状态 
    for(i=0;i<strlen(f);i++)
    {
        if(dy[f[i]-'A']==0)
        {
            dy[f[i]-'A']=s[i];
        }
        else
        {
            if(dy[f[i]-'A']!=s[i]) {sta=3;break;}
        }
    }
    int stat[26]={0};
    for(i=0;i<strlen(f);i++) stat[dy[i]-'A']++;
    for(i=0;i<26;i++) if(stat[i]==0) sta=3;
    for(i=0;i<26;i++) if(dy[i]==0) sta=2;
    char c[100];
    scanf("%s",c);
    if(sta!=1)
    {
        printf("Failed");
    }
    else
    {
        for(i=0;i<strlen(c);i++) printf("%c",dy[c[i]-'A']);
    }
    return 0;
}

评论