#include<stdio.h> int N, cnt; char data[50]; void f(int s, int tmp, int e, int h) { if (h == 1) { printf("%d %d\n", s, e); return; } f(s, e, tmp, h - 1); printf("%d %d\n", s, e); f(tmp, s, e, h - 1); } int main() { int i, j, tmp; char ctmp; scanf("%d", &N); data[0] = '1'; for (i = 1; i <= N; i++) { tmp = 0; for (j = cnt; j >= 0; j--) { tmp += (data[j] - '0') * 2; data[j] = tmp % 10 + '0'; tmp /= 10; } if (tmp>0) { ctmp = tmp + '0'; cnt++; for (j = cnt; j >= 1; j--) { data[j] = data[j - 1]; } data[0] = ctmp; } } data[cnt]--; printf("%s\n", data); if (N <= 20) { f(1, 2, 3, N); } }
1914번: 하노이 탑
https://www.acmicpc.net/problem/1914
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기