UVA - 1339 Ancient Cipher

来源:互联网 发布:网络阅卷成绩 编辑:程序博客网 时间:2024/06/07 22:37

Description

Ancient Roman empirehad a strong government system with various departments, includinga secret service department. Important documents were sent betweenprovinces and the capital in encrypted form to preventeavesdropping. The most popular ciphers in those times were socalled substitution cipher and permutation cipher.
Substitution cipher changes all occurrences of each letter to someother letter. Substitutes for all letters must be different. Forsome letters substitute letter may coincide with the originalletter. For example, applying substitution cipher that changes allletters from 'A' to 'Y' to the next ones in the alphabet, andchanges 'Z' to 'A', to the message "VICTORIOUS" one gets themessage "WJDUPSJPVT".
Permutation cipher applies some permutation to the letters of themessage. For example, applying the permutation <2,1, 5, 4, 3, 7, 6, 10, 9, 8> to the message"VICTORIOUS" one gets the message "IVOTCIRSUO".
It was quickly noticed that being applied separately, bothsubstitution cipher and permutation cipher were rather weak. Butwhen being combined, they were strong enough for those times. Thus,the most important messages were first encrypted using substitutioncipher, and then the result was encrypted using permutation cipher.Encrypting the message "VICTORIOUS" with the combination of theciphers described above one gets the message "JWPUDJSTVP".
Archeologists have recently found the message engraved on a stoneplate. At the first glance it seemed completely meaningless, so itwas suggested that the message was encrypted with some substitutionand permutation ciphers. They have conjectured the possible text ofthe original message that was encrypted, and now they want to checktheir conjecture. They need a computer program to do it, so youhave to write one.

Input

Input contains twolines. The first line contains the message engraved on the plate.Before encrypting, all spaces and punctuation marks were removed,so the encrypted message contains only capital letters of theEnglish alphabet. The second line contains the original messagethat is conjectured to be encrypted in the message on the firstline. It also contains only capital letters of the Englishalphabet.
The lengths of both lines of the input are equal and do not exceed100.

Output

Output "YES" if themessage on the first line of the input file could be the result ofencrypting the message on the second line, or "NO" in the othercase.

Sample Input

JWPUDJSTVPVICTORIOUS

Sample Output

YES


分析:本题直接对字符串进行字符统计,对统计的结果排序,如果排序结果一样则可以。


#include <stdio.h>#include <algorithm>#include <string.h>const int maxn = 110;char s1[maxn];char s2[maxn];int c1[26];int c2[26];bool cmp(int a,int b){return a<b;}int main(){while(~scanf("%s%s",s1,s2)){int error = 0;int len = strlen(s1);memset(c1,0,sizeof(c1));memset(c2,0,sizeof(c2));for(int i=0; i<len; i++){c1[s1[i]-'A']++;c2[s2[i]-'A']++;}std::sort(c1,c1+26,cmp);std::sort(c2,c2+26,cmp);for(int i=0; i<26; i++){if(c1[i] != c2[i]) {error=1;break;}}if(error)printf("NO\n");else printf("YES\n");}    return 0;}


0 0