#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int check(char ar[], char ch[], int idx);
int main() {
char ar[21] = {};
char ch[21] = {};
int N;
if(check
(ar
,ch
,strlen(ar
)) == 1){ }
else if(check
(ch
,ar
,strlen(ch
)) == 1){ }
else
return 0;
}
int check(char ar[], char ch[], int idx){
char tmp1[21] = {}, tmp2[21] = {};
int check = 0;
for(int N=1; N<=10; N++){
int cnt = 0, index = 0, s = 0;
for(int i
=0; i
<strlen(ar
); i
++) // 함수 끝나고 배열값이 바뀌는 것을 방지하기 위한 임시 변수 tmp1[i] = ar[i];
for(int i
=0; i
<strlen(ch
); i
++) tmp2[i] = ch[i];
for (int i = 0; i < idx; i++) {
if (tmp1[s] >= 'A' && tmp1[s] <= 'Z') {
tmp1[s] = tmp1[s] + N;
if(tmp1[s] == tmp2[index])
cnt++;
} // 대문자
else if (tmp1[s] >= 'a' && tmp1[s] <= 'z') {
tmp1[s] = tmp1[s] - N;
if(tmp1[s] == tmp2[index])
cnt++;
} // 소문자
else if (tmp1[s] > '0' && tmp1[s] <= '9') {
int k = 0;
k = tmp1[s] - '0';
if(tmp1[s] == '1'){
if (tmp1[s + 1] >= '0' && tmp1[s + 1] <= '9') {
k *= 10;
k += tmp1[s + 1] - '0';
s++;
}
}
if(tmp1[s] == '2'){
if (tmp1[s + 1] >= '0' && tmp1[s + 1] <= '6') {
k *= 10;
k += tmp1[s + 1] - '0';
s++;
}
}
char u = 'A' + k - 1;
for(int j=0; j<N; j++){ // N번만큼 반복
if(u == tmp2[index]){
cnt++;
index++;
}
}
index--; // for문 과정에서 1이 더 오름
} // 숫자
else {
if(tmp2[index] == ' ')
cnt++;
} // 특수문자
index++;
s++;
} // 문자열 크기만큼 반복
if(strlen(tmp2
) == cnt
){ // 변경 가능할 시 check = 1;
break;
}
else // 변경 불가능할 시
continue;
} // N for문
if(check == 1)
return 1;
else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKaW50IGNoZWNrKGNoYXIgYXJbXSwgY2hhciBjaFtdLCBpbnQgaWR4KTsKCmludCBtYWluKCkgewogICBjaGFyIGFyWzIxXSA9IHt9OwogICBjaGFyIGNoWzIxXSA9IHt9OwogICBpbnQgTjsKICAgZ2V0cyhhcik7CiAgIGdldHMoY2gpOwogICBpZihjaGVjayhhcixjaCxzdHJsZW4oYXIpKSA9PSAxKXsKICAgICAgcHJpbnRmKCIxXG4iKTsKICAgfQogICBlbHNlIGlmKGNoZWNrKGNoLGFyLHN0cmxlbihjaCkpID09IDEpewogICAgICBwcmludGYoIjJcbiIpOwogICB9CiAgIGVsc2UKICAgICAgcHJpbnRmKCIwIik7CiAgIHJldHVybiAwOwp9CgppbnQgY2hlY2soY2hhciBhcltdLCBjaGFyIGNoW10sIGludCBpZHgpeyAKICAgY2hhciB0bXAxWzIxXSA9IHt9LCB0bXAyWzIxXSA9IHt9OwogICBpbnQgY2hlY2sgPSAwOwoKICAgZm9yKGludCBOPTE7IE48PTEwOyBOKyspewogICAgICBpbnQgY250ID0gMCwgaW5kZXggPSAwLCBzID0gMDsKCiAgICAgIGZvcihpbnQgaT0wOyBpPHN0cmxlbihhcik7IGkrKykgLy8g7ZWo7IiYIOuBneuCmOqzoCDrsLDsl7TqsJLsnbQg67CU64CM64qUIOqyg+ydhCDrsKnsp4DtlZjquLAg7JyE7ZWcIOyehOyLnCDrs4DsiJgKICAgICAgICAgdG1wMVtpXSA9IGFyW2ldOwogICAgICBmb3IoaW50IGk9MDsgaTxzdHJsZW4oY2gpOyBpKyspCiAgICAgICAgIHRtcDJbaV0gPSBjaFtpXTsKCiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWR4OyBpKyspIHsgCgogICAgICAgICBpZiAodG1wMVtzXSA+PSAnQScgJiYgdG1wMVtzXSA8PSAnWicpIHsKICAgICAgICAgICAgdG1wMVtzXSA9IHRtcDFbc10gKyBOOyAKICAgICAgICAgICAgaWYodG1wMVtzXSA9PSB0bXAyW2luZGV4XSkKICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgIH0gLy8g64yA66y47J6QCgogICAgICAgICBlbHNlIGlmICh0bXAxW3NdID49ICdhJyAmJiB0bXAxW3NdIDw9ICd6JykgewogICAgICAgICAgICB0bXAxW3NdID0gdG1wMVtzXSAtIE47IAogICAgICAgICAgICBpZih0bXAxW3NdID09IHRtcDJbaW5kZXhdKQogICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgfSAvLyDshozrrLjsnpAKCiAgICAgICAgIGVsc2UgaWYgKHRtcDFbc10gPiAnMCcgJiYgdG1wMVtzXSA8PSAnOScpIHsKICAgICAgICAgICAgaW50IGsgPSAwOwogICAgICAgICAgICBrID0gdG1wMVtzXSAtICcwJzsgCiAgICAgICAgICAgIGlmKHRtcDFbc10gPT0gJzEnKXsKICAgICAgICAgICAgICAgaWYgKHRtcDFbcyArIDFdID49ICcwJyAmJiB0bXAxW3MgKyAxXSA8PSAnOScpIHsKICAgICAgICAgICAgICAgICAgayAqPSAxMDsKICAgICAgICAgICAgICAgICAgayArPSB0bXAxW3MgKyAxXSAtICcwJzsgCiAgICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHRtcDFbc10gPT0gJzInKXsKICAgICAgICAgICAgICAgaWYgKHRtcDFbcyArIDFdID49ICcwJyAmJiB0bXAxW3MgKyAxXSA8PSAnNicpIHsKICAgICAgICAgICAgICAgICAgayAqPSAxMDsKICAgICAgICAgICAgICAgICAgayArPSB0bXAxW3MgKyAxXSAtICcwJzsgCiAgICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBjaGFyIHUgPSAnQScgKyBrIC0gMTsgCgogICAgICAgICAgICBmb3IoaW50IGo9MDsgajxOOyBqKyspeyAvLyBO67KI66eM7YG8IOuwmOuztQogICAgICAgICAgICAgICBpZih1ID09IHRtcDJbaW5kZXhdKXsKICAgICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpbmRleC0tOyAvLyBmb3LrrLgg6rO87KCV7JeQ7IScIDHsnbQg642UIOyYpOumhAogICAgICAgICB9IC8vIOyIq+yekAoKICAgICAgICAgZWxzZSB7IAogICAgICAgICAgICBpZih0bXAyW2luZGV4XSA9PSAnICcpCiAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgICB9IC8vIO2KueyImOusuOyekAoKICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgcysrOwoKICAgICAgfSAvLyDrrLjsnpDsl7Qg7YGs6riw66eM7YG8IOuwmOuztQogICAgICBwcmludGYoIiVz77+mbiIsdG1wMSk7CiAgICAgIGlmKHN0cmxlbih0bXAyKSA9PSBjbnQpeyAvLyDrs4Dqsr0g6rCA64ql7ZWgIOyLnAogICAgICAgICBjaGVjayA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGVsc2UgLy8g67OA6rK9IOu2iOqwgOuKpe2VoCDsi5wKICAgICAgICAgY29udGludWU7CgogICB9IC8vIE4gZm9y66y4CiAgICAgIGlmKGNoZWNrID09IDEpCiAgICAgICAgIHJldHVybiAxOwogICAgICBlbHNlIAogICAgICAgICByZXR1cm4gMDsKfQ==