7840 十全数 枚举check

思路分析

 
1. 定义十全数:十全数是指一个数的各位数字之和等于10的数。
 
2. 输入处理:程序首先读取一个正整数k,表示需要找到的第k个十全数。
 
  • 枚举正整数:从1开始,逐个检查每个正整数是否是十全数。
 
4. 检查函数check:
 
  • 计算一个数n的各位数字之和。
 
  • 如果和等于10,返回true,否则返回false。
 
  • 计数和输出:
 
  • 使用一个计数器sum来记录找到的十全数的个数。
 
  • 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;
}

 

posted @ 2024-10-17 16:49  CRt0729  阅读(13)  评论(0编辑  收藏  举报