Content
给定一个数字 \(k\),求出第 \(k\) 小的各数位和为 \(10\) 的数。
数据范围:\(1\leqslant k\leqslant 10000\)。
Solution
这题为什么不可以打表解决呢?我们可以直接枚举、判断,获得所有第 \(1\sim10000\) 个各数位和为 \(10\) 的数,然后就可以直接输出答案了。
Code
int k, f[10007], cur;
int main() {
while(f[0] < 10000) {
int sum = 0, p = cur;
while(p) {
sum += p % 10;
p /= 10;
}
if(sum == 10) f[++f[0]] = cur;
cur++;
}
getint(k);
writeint(f[k]);
return 0;
}