#include<stdio.h> char ans[100]; long long int data[100], n, cnt, sum[100], p; int main() { int i, tmp; scanf("%lld", &n); data[1] = sum[1] = 1; data[2] = 1; sum[2] = 2; if (n != 1 && n != 2) { for (i = 3; ; i++) { data[i] = data[i - 1] + data[i - 2]; sum[i] = sum[i - 1] + data[i]; if (sum[i] >= n) { tmp = p = i; break; } } while (1) { ans[cnt++] = '1'; ans[cnt++] = '0'; n--; n -= sum[p - 1]; p -= 2; for (i = p - 1; i >= 1; i--) { if (sum[i]<n) { p = i + 1; break; } ans[cnt++] = '0'; } if (n == 2) { ans[cnt++] = '1'; ans[cnt++] = '0'; break; } else if (n == 1) { if (cnt + 2 == tmp) { ans[cnt++] = '0'; } ans[cnt++] = '1'; break; } else if (n == 0) { if (cnt + 2 == tmp) { ans[cnt++] = '0'; } ans[cnt++] = '0'; break; } } } else if (n == 1) { ans[cnt++] = '1'; } else { ans[cnt++] = '1'; ans[cnt++] = '0'; } printf("%s", ans); return 0; }
2201번: 이친수 찾기
https://www.acmicpc.net/problem/2201
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기