import java.io.*;
import java.util.Scanner;
import java.lang.Math;
class Solution {
static char[] Answer;
// TODO Auto-generated method stub
/*
아래의 System.setIn 함수는 sample_input.txt 를 read only 형식으로 열어
표준 입력 스트림으로 redirection 합니다.
따라서, 키보드를 통한 표준 입력으로 입력 값을 전달하는 대신
sample_input.txt 파일 내에 존재하는 데이터를 표준 입력 스트림으로 전달합니다.
본 문제에 대한 소스코드를 테스트함에 있어, 원하는 입력 데이터를 sample_input.txt에 저장하여
System.setIn 함수를 이용하면, 표준 입력 (키보드 입력) 대신 sample_input.txt 파일의 데이터가 전달됩니다.
그러므로 테스트를 수행할 때에는 아래의 System.setIn 함수의 주석을 제거하여 사용할 수 있습니다.
코드를 제출하실 때에는 반드시 System.setIn 함수를 지우거나 주석 처리 해야합니다.
*/
// System.setIn(new FileInputStream("sample_input.txt"));
/*
표준입력 System.in 으로부터 스캐너를 만들어 데이터를 읽어옵니다.
*/
Scanner sc
= new Scanner
(System.
in);
int T; // 테스트 케이스의 수
int i, l;
Answer = new char[200];
for(l = 0; l < 200 ; l++)
Answer[l] = 0;
/* 테스트 케이스의 수 T */
T = sc.nextInt();
sc.nextLine();
/* 각 테스트 케이스에 대한 루프문 */
for(i = 0; i < T; i++)
{
/*************************************************************************************/
// 이 곳에 알고리즘을 구현합니다.
// Input 배열에 저장된 입력 데이터에 대한 정답을 Answer 배열에 저장하는 것을 가정합니다.
/*************************************************************************************/
tmp = sc.nextLine();
String keystr
= tmp.
substring(0,
3); int key = 0;
for (int ii =0; ii<3; ii++){
key = key*2 + keystr.charAt(ii)-'0';
//System.out.println(keystr+ " : " + keystr.charAt(ii)+ " : " + (keystr.charAt(ii)-'0'));
}
//System.out.println(keystr+ " : " + key);
tmp = tmp.substring(3);
for ( int ii =0; ii<tmp.length()/8;ii++)
{
for (int j = ii*8 ; j < (ii+1)*8; j++){
Answer[ii] = (char)((int)Answer[ii]*2 + (int)(tmp.charAt(j)-'0'));
}
Answer[ii] = (char)((int)Answer[ii]-key+(int)'A');
}
/* 출력부분 */
System.
out.
printf("#%d ", i
+1); tmp
= new String(Answer,
0,Answer.
length); System.
out.
printf("%s\n",tmp
); for(l = 0; l < 200 ; l++)
Answer[l] = 0;
}
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS5sYW5nLk1hdGg7CgpjbGFzcyBTb2x1dGlvbiB7CglzdGF0aWMgY2hhcltdCQlBbnN3ZXI7CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpICB0aHJvd3MgSU9FeGNlcHRpb24gIHsKCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCgoJCS8qCgkJ7JWE656Y7J2YIFN5c3RlbS5zZXRJbiDtlajsiJjripQgc2FtcGxlX2lucHV0LnR4dCDrpbwgcmVhZCBvbmx5IO2YleyLneycvOuhnCDsl7TslrQKCQntkZzspIAg7J6F66ClIOyKpO2KuOumvOycvOuhnCByZWRpcmVjdGlvbiDtlanri4jri6QuCgkJ65Sw65287IScLCDtgqTrs7Trk5zrpbwg7Ya17ZWcIO2RnOykgCDsnoXroKXsnLzroZwg7J6F66ClIOqwkuydhCDsoITri6ztlZjripQg64yA7IugCgkJc2FtcGxlX2lucHV0LnR4dCDtjIzsnbwg64K07JeQIOyhtOyerO2VmOuKlCDrjbDsnbTthLDrpbwg7ZGc7KSAIOyeheugpSDsiqTtirjrprzsnLzroZwg7KCE64us7ZWp64uI64ukLgoJCeuzuCDrrLjsoJzsl5Ag64yA7ZWcIOyGjOyKpOy9lOuTnOulvCDthYzsiqTtirjtlajsl5Ag7J6I7Ja0LCDsm5DtlZjripQg7J6F66ClIOuNsOydtO2EsOulvCBzYW1wbGVfaW5wdXQudHh07JeQIOyggOyepe2VmOyXrAoJCVN5c3RlbS5zZXRJbiDtlajsiJjrpbwg7J207Jqp7ZWY66m0LCDtkZzspIAg7J6F66ClICjtgqTrs7Trk5wg7J6F66ClKSDrjIDsi6Agc2FtcGxlX2lucHV0LnR4dCDtjIzsnbzsnZgg642w7J207YSw6rCAIOyghOuLrOuQqeuLiOuLpC4KCQnqt7jrn6zrr4DroZwg7YWM7Iqk7Yq466W8IOyImO2Wie2VoCDrlYzsl5DripQg7JWE656Y7J2YIFN5c3RlbS5zZXRJbiDtlajsiJjsnZgg7KO87ISd7J2EIOygnOqxsO2VmOyXrCDsgqzsmqntlaAg7IiYIOyeiOyKteuLiOuLpC4KCQnsvZTrk5zrpbwg7KCc7Lac7ZWY7IukIOuVjOyXkOuKlCDrsJjrk5zsi5wgU3lzdGVtLnNldEluIO2VqOyImOulvCDsp4DsmrDqsbDrgpgg7KO87ISdIOyymOumrCDtlbTslbztlanri4jri6QuCgkJKi8KLy8JCVN5c3RlbS5zZXRJbihuZXcgRmlsZUlucHV0U3RyZWFtKCJzYW1wbGVfaW5wdXQudHh0IikpOwoKCQkvKgoJCe2RnOykgOyeheugpSBTeXN0ZW0uaW4g7Jy866Gc67aA7YSwIOyKpOy6kOuEiOulvCDrp4zrk6TslrQg642w7J207YSw66W8IOydveyWtOyYteuLiOuLpC4KCQkqLwoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCQoJCWludAkJVDsJCQkJLy8g7YWM7Iqk7Yq4IOy8gOydtOyKpOydmCDsiJgKCQlpbnQJCWksIGw7CgkJU3RyaW5nCXRtcDsKCQkKCQkKCQlBbnN3ZXIgPSBuZXcgY2hhclsyMDBdOwoJCWZvcihsID0gMDsgbCA8IDIwMCA7IGwrKykKCQkJCUFuc3dlcltsXSA9IDA7CgkJCgkJLyog7YWM7Iqk7Yq4IOy8gOydtOyKpOydmCDsiJggVCAqLwoJCVQgPSBzYy5uZXh0SW50KCk7CgkJc2MubmV4dExpbmUoKTsKCQkKCQkvKiDqsIEg7YWM7Iqk7Yq4IOy8gOydtOyKpOyXkCDrjIDtlZwg66Oo7ZSE66y4ICovCgkJZm9yKGkgPSAwOyBpIDwgVDsgaSsrKQoJCXsKCgkJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJCQkvLyDsnbQg6rOz7JeQIOyVjOqzoOumrOymmOydhCDqtaztmITtlanri4jri6QuCgkJCS8vIElucHV0IOuwsOyXtOyXkCDsoIDsnqXrkJwg7J6F66ClIOuNsOydtO2EsOyXkCDrjIDtlZwg7KCV64u17J2EIEFuc3dlciDrsLDsl7Tsl5Ag7KCA7J6l7ZWY64qUIOqyg+ydhCDqsIDsoJXtlanri4jri6QuCgkJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJCQkKCQkJdG1wID0gc2MubmV4dExpbmUoKTsKCQkJU3RyaW5nIGtleXN0ciA9IHRtcC5zdWJzdHJpbmcoMCwzKTsKCQkJaW50IGtleSA9IDA7CgkJCWZvciAoaW50IGlpID0wOyBpaTwzOyBpaSsrKXsKCQkJCWtleSA9IGtleSoyICsga2V5c3RyLmNoYXJBdChpaSktJzAnOwoJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oa2V5c3RyKyAiIDogIiArIGtleXN0ci5jaGFyQXQoaWkpKyAiIDogIiArIChrZXlzdHIuY2hhckF0KGlpKS0nMCcpKTsKCQkJfQoJCQkvL1N5c3RlbS5vdXQucHJpbnRsbihrZXlzdHIrICIgOiAiICsga2V5KTsKCQkJdG1wID0gdG1wLnN1YnN0cmluZygzKTsKCQkJZm9yICggaW50IGlpID0wOyBpaTx0bXAubGVuZ3RoKCkvODtpaSsrKQoJCQl7CgkJCQkKCQkJCWZvciAoaW50IGogPSBpaSo4IDsgaiA8IChpaSsxKSo4OyBqKyspewoJCQkJCUFuc3dlcltpaV0gPSAoY2hhcikoKGludClBbnN3ZXJbaWldKjIgKyAoaW50KSh0bXAuY2hhckF0KGopLScwJykpOwoJCQkJfQoJCQkJQW5zd2VyW2lpXSA9IChjaGFyKSgoaW50KUFuc3dlcltpaV0ta2V5KyhpbnQpJ0EnKTsKCQkJfQoJCQkKCQkJLyog7Lac66Cl67aA67aEICovCgkJCVN5c3RlbS5vdXQucHJpbnRmKCIjJWQgIiwgaSsxKTsKCQkJdG1wID0gbmV3IFN0cmluZyhBbnN3ZXIsMCxBbnN3ZXIubGVuZ3RoKTsKCQkJU3lzdGVtLm91dC5wcmludGYoIiVzXG4iLHRtcCk7CgkJCWZvcihsID0gMDsgbCA8IDIwMCA7IGwrKykKCQkJCUFuc3dlcltsXSA9IDA7CgkJfQoJfQp9
MTAKMTAwMDAwMDAxMDAwMDAxMDAxMTAwMDEwMDExMDAwMDExMTEwMDAwMTAwMAowMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDExMDEwMDAwMDAwMDAwMDAxMTAxMDAwMDAwMDAKMDEwMDAwMDExMDAwMDAxMDAwMDAwMDEwMDExMDAwMDAxMTAwMDAwMDAxMAoxMTAwMDAxMDEwMDAwMDEwMTExMDAwMDAxMTAwMDAxMDAxMTAwMDAxMTAwMDAwMDEwMTAKMDExMDAwMTAwMTAwMDAxMDEwMDAwMDEwMDAxMDAwMDEwMDEwMDAxMDEwMDAwMDAwMDExMDAwMDExMTEKMDAxMDAwMTAxMTAwMDAwMTAwMTAwMDAwMDExMDAwMTAxMDAwMDAwMTExMTAwMDEwMDEwMDAwMTEwMDEKMTAxMDAwMDExMDAwMDAwMTAwMTAwMDEwMDAwMDAwMTAwMDAwMDAxMDAxMQowMTAwMDAwMTEwMTAwMDEwMDAwMDAwMTAxMTEwMDAwMDExMAoxMTEwMDAwMDExMTAwMDAxMDAwMDAwMDEwMDEwMDAwMTAxMDAwMDAxMDExMDAwMDExMDAwMDAwMTEwMTAwMDAxMTEwMDAwMDExMTEwMDAxMDAwMDAwMDEwMDAxMDAwMTAwMTAwMDAxMDAxMTAwMDEwMTAwMDAwMTAxMDEwMDAxMDExMDAwMDEwMTExMDAwMTEwMDAwMDAxMTAwMTAwMDExMDEwMDAwMTEwMTEwMDAxMTEwMDAwMDExMTAxMDAwMTExMTAwMDAxMTExMTAwMTAwMDAwCjAxMTAwMDEwMTAxMDAwMDAwMTEwMDAwMTExMTAwMDEwMTAxMDAwMTAxMTEwMDAxMDAwMDAwMDAxMDAx
10
1000000010000010011000100110000111100001000
000000000010000000000001101000000000000110100000000
0100000110000010000000100110000011000000010
110000101000001011100000110000100110000110000001010
01100010010000101000001000100001001000101000000001100001111
00100010110000010010000001100010100000011110001001000011001
1010000110000001001000100000001000000010011
01000001101000100000001011100000110
1110000011100001000000010010000101000001011000011000000110100001110000011110001000000010001000100100001001100010100000101010001011000010111000110000001100100011010000110110001110000011101000111100001111100100000
01100010101000000110000111100010101000101110001000000001001