POJ 2159 分组密码与流密码

因为既要替换又要排列,而方法却有很多种,无法明确确定。但是知道明文中一些相同字符出现的次数跟密文出现的次数相同。所以可以根据这一点来进行计算。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<cmath>
#include<cstdlib>
#include<list>
#include<queue>
#define mm(a,b) memset(a,b,sizeof(a))
#define ACCELERATE (ios::sync_with_stdio(false),cin.tie(0))
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
#define MAXN 0x3f3f3f3f3f3f3f3f
#define PI acos(-1.0)
#define E exp(1.0)
using namespace std;

//#define debug

int main()
{
    #ifdef debug
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif // debug

    char s1[105],s2[105];
    int c1[27],c2[27];
    while(scanf("%s",s1)!=EOF){
        scanf("%s",s2);
        mm(c1,0);
        mm(c2,0);
        for(int i=0;s1[i];i++){
            c1[s1[i]-'A']++;
        }
        for(int i=0;s2[i];i++){
            c2[s2[i]-'A']++;
        }
        int i;
        sort(c1,c1+26);
        sort(c2,c2+26);
        for(i=0;i<26;i++) if(c1[i]!=c2[i]) break;
        if(i<26) printf("NO\n");
        else printf("YES\n");
    }
    return 0;
}
/*

*/

猜你喜欢

转载自blog.csdn.net/qq_40679299/article/details/81046915