思路分析
1.
定义十全数:十全数是指一个数的各位数字之和等于10的数。
2.
输入处理:程序首先读取一个正整数k,表示需要找到的第k个十全数。
- 枚举正整数:从1开始,逐个检查每个正整数是否是十全数。
4.
检查函数check:
- 如果和等于10,返回true,否则返回false。
- 当sum等于k时,输出当前数i,因为它是第k个十全数。
6.
终止条件:一旦找到第k个十全数,程序输出结果并终止。
关键点
- 逐个检查:程序通过逐个检查每个正整数来找到十全数。
- 效率:由于k的范围是1到10000,程序的效率足以在合理时间内找到结果。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e3+10, inf = 0x3f3f3f3f;
// 检查函数:判断一个数的各位数字之和是否等于10
int check(int n) {
int sum = 0;
while(n) {
sum += n % 10; // 取出最低位数字并加到sum
n /= 10; // 去掉最低位数字
}
return sum == 10; // 返回sum是否等于10
}
int main() {
int k, sum = 0;
cin >> k; // 读取输入的正整数k
for(int i = 1; ; i++) { // 从1开始枚举所有正整数
if(check(i)) sum++; // 如果i是十全数,计数加1
if(sum == k) { // 如果找到了第k个十全数
cout << i << endl; // 输出结果
return 0; // 结束程序
}
}
return 0;
}