| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 26694 | grands | 질문 (CEOI14_question_grader) | C++11 | 7000 ms | 24556 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
