📄 1937.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1937 on 2005-10-07 at 13:36:24 */
#include <cstdio>
#include <cstring>
int main()
{
long A[11][11], n, m;
int i, j, k, c;
bool app[10], printed;
for(i = 0; i < 11; i++) {
for(j = 0; j <= i; j++) {
if(j == 0 || i == 1) {
A[j][i] = 1;
} else {
A[j][i] = A[j-1][i] * (i - j + 1);
}
}
}
while(scanf("%ld", &n) == 1) {
if(n == 0) {
return 0;
} else {
memset(app, false, sizeof(app));
for(k = 1; k < 11; k++) {
if(n > 9 * A[k-1][9]) {
n -= 9 * A[k-1][9];
} else {
break;
}
}
printed = false;
for(i = k; i > 0; i--) {
if(n % A[i-1][9-k+i] == 0) {
m = n / A[i-1][9-k+i];
n = A[i-1][9-k+i];
} else {
m = n / A[i-1][9-k+i] + 1;
n %= A[i-1][9-k+i];
}
c = 0;
for(j = 0; j < 10; j++) {
if(!app[j]) {
if(j != 0) {
c++;
} else if(printed) {
c++;
}
}
if(c == m) {
printf("%d", j);
app[j] = true;
printed = true;
break;
}
}
}
putchar('\n');
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -