Submission #26694

#TimeUsernameProblemLanguageResultExecution timeMemory
26694grandsQuestion (Grader is different from the original contest) (CEOI14_question_grader)C++11
0 / 100
7000 ms24556 KiB
#include <string.h> void itoa(int num, char *str, int radix){ int i = 0; int deg = 1; int cnt = 0; while (1){ // 자리수의 수를 뽑는다 if ((num / deg) > 0) cnt++; else break; deg *= radix; } deg /= radix; // deg가 기존 자리수보다 한자리 높게 카운트 되어서 한번 나누어줌 // EX) 1241 -> cnt = 4; deg = 1000; for (i = 0; i<cnt; i++) { // 자리수만큼 순회 *(str + i) = num / deg + '0'; // 가장 큰 자리수의 수부터 뽑음 num -= ((num / deg) * deg); // 뽑은 자리수의 수를 없엠 deg /= radix; // 자리수 줄임 } *(str + i) = '\0'; // 문자열끝널.. } //[출처] [C] atoi(), itoa() 구현.. | 작성자 Finger int encode(int n, int x, int y) { char N[100] = { 0 }, X[100] = { 0 }, Y[100] = { 0 }; itoa(n, N, 2); //printf("n %d : %10s\n", n, N); itoa(x, X, 2); //printf("x %d : %10s\n", x, X); itoa(y, Y, 2); //printf("y %d : %10s\n", y, Y); //printf("\n"); int i = strlen(N) - 1, j = strlen(X) - 1, k = strlen(Y) - 1; int ret = 1; while (true){ if (ret % 2 == 0 && N[i] == X[j] && X[j] != Y[k]){ return ret; } if (ret % 2 == 1 && N[i] == Y[k] && X[j] != Y[k]){ return ret; } i--; j--; k--; if (i < 0){ N[0] = '0'; i = 0; } if (j < 0){ X[0] = '0'; j = 0; } if (k < 0){ Y[0] = '0'; k = 0; } ret++; } }
#include <string.h> void itoa1(int num, char *str, int radix){ int i = 0; int deg = 1; int cnt = 0; while (1){ // 자리수의 수를 뽑는다 if ((num / deg) > 0) cnt++; else break; deg *= radix; } deg /= radix; // deg가 기존 자리수보다 한자리 높게 카운트 되어서 한번 나누어줌 // EX) 1241 -> cnt = 4; deg = 1000; for (i = 0; i<cnt; i++) { // 자리수만큼 순회 *(str + i) = num / deg + '0'; // 가장 큰 자리수의 수부터 뽑음 num -= ((num / deg) * deg); // 뽑은 자리수의 수를 없엠 deg /= radix; // 자리수 줄임 } *(str + i) = '\0'; // 문자열끝널.. } //[출처] [C] atoi(), itoa() 구현.. | 작성자 Finger int decode (int n, int q, int h) { char N[100] = { 0 }, Q[100] = { 0 } ; itoa1(n, N, 2); itoa1(q, Q, 2); int i = strlen(N) - h, j = strlen(Q) - h; if (h % 2 == 0){ //ret % 2 == 0 && N[i] == X[j] && X[j] != Y[k] if (i < 0){ N[0] = '0'; i = 0; } if (j < 0){ Q[0] = '0'; j = 0; } return (N[i] == Q[j]); } else{ //ret % 2 == 1 && N[i] == Y[j] && X[j] != Y[k] if (i < 0){ N[0] = '0'; i = 0; } if (j < 0){ Q[0] = '0'; j = 0; } return !(N[i] == Q[j]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...