/* -*- coding: utf-8 -*- * * 294.cc: No.294 SuperFizzBuzz - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_K = 25; /* typedef */ /* global variables */ int combs[MAX_K + 1][MAX_K + 1]; /* subroutines */ /* main */ int main() { for (int i = 0; i <= MAX_K; i++) { combs[i][0] = combs[i][i] = 1; for (int j = 1; j < i; j++) combs[i][j] = combs[i - 1][j - 1] + combs[i - 1][j]; } //printf("combs[25][13]=%d\n", combs[25][13]); int n; cin >> n; int k; for (k = 2;; k++) { int sum = 0; for (int i = 2; i <= k; i += 3) sum += combs[k][i]; if (sum < n) n -= sum; else break; } //printf("k=%d, n=%d\n", k, n); int kbits = 1 << k, cnt = 0; for (int bits = 0; bits < kbits; bits++) { int bc = 0; for (int i = 0; i < k; i++) if ((bits >> i) & 1) bc++; if (bc % 3 == 2) { cnt++; if (cnt >= n) { for (int i = k - 1; i >= 0; i--) putchar(((bits >> i) & 1) ? '5' : '3'); printf("5\n"); break; } } } //printf("n=%d, cnt=%d\n", n, cnt); return 0; }