페이지

1256번: 사전

https://www.acmicpc.net/problem/1256


#include<stdio.h>
#include<algorithm>
using namespace std;
int n, m, k, c[201][101];
int main() {
    for (int i = 0; i <= 200; i++) {
        c[i][0] = 1;
        for (int j = 1; j <= i; j++)
            c[i][j] = min(c[i - 1][j - 1] + c[i - 1][j], (int)1e9);
    }
    scanf("%d %d %d", &n, &m, &k);
    int tot = n + m;
    if (k > c[tot][n]) puts("-1");
    else {
        for (int i = 0; i < tot; i++) {
            if (k > c[n + m - 1][m]) {
                printf("z");
                k -= c[n + m - 1][m];
                m--;
            }
            else {
                printf("a");
                n--;
            }
        }
    }
    return 0;
}

댓글 없음 :

댓글 쓰기