很难看懂的题,单纯地以它的sample去写就是完全看错题目了
查找了网上的解题报告,发现跟密码学有关,ACM需要的知识果然是百科的
关键在于用这种加密方法加密后,密文和原文长度相同,字母出现的种类数量相同,每种字母出现的概率(次数)相同。

Code
#include <iostream>
#include <string>
using namespace std;
int pe[30],ps[30],pp[150];
int main()
{
string s1,s2;
int len,i;
while (cin >> s1)
{
cin >> s2;
len = s1.length();
memset(pe,0,sizeof(pe));
memset(ps,0,sizeof(ps));
memset(pp,0,sizeof(pp));
for (i = 0;i < len;i++)
{
pe[s1[i] - 'A']++;
ps[s2[i] - 'A']++;
}
for (i = 0;i < 26;i++)
{
pp[pe[i]]++;
pp[ps[i]]--;
}
for (i = 0;i <= len && pp[i] == 0;i++);
if(i > len)
cout << "YES" <<endl;
else
cout << "NO" <<endl;
}
return 0;
}