https://www.acmicpc.net/problem/24268
간단한 순열 문제였다. 최대 입력이 10개이기 때문에 10!을 하면 약 300만 밖에 나오지 않아서 쉽게 풀 수 있었다. 순열은 c++의 next permutation을 사용하였다.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
vector<int> vec;
int main() {
int n, d, result;
scanf("%d %d", &n, &d);
for (int i = 0; i < d; i++) {
vec.push_back(i);
}
do {
result = 0;
if (vec[0] != 0) {
for (int i = d - 1; i >= 0; i--) {
result += ((int)pow(d, i) * vec[(d - 1) - i]);
}
if (result > n) {
printf("%d", result);
return 0;
}
}
} while (next_permutation(vec.begin(), vec.end()));
printf("-1");
return 0;
}