NC200139. 完美数字
描述
如果一个正整数的每位数的数字之和是10,我们则认为这个数字是完美数,给定一个正整数k,你的任务是找到第k小的完美数。
输入描述
第一行是一个整数, 代表有组数据。
接下来行,每行一个正整数k (1 ≤ k ≤ 10000)。
输出描述
每行输出一个正整数,表示第k小的完美数。
示例1
输入:
2 1 2
输出:
19 28
C++(clang++ 11.0.1) 解法, 执行用时: 190ms, 内存消耗: 448K, 提交时间: 2023-04-28 11:10:42
#include<iostream> using namespace std; const int N=1e+4+9; int a[N]; int main() { int t,n; int cnt=1; for(int i=1;cnt<N;i++) { int s=0; int x=i; while(x) { s+=x%10; x/=10; } if(s==10) a[cnt++]=i; } cin>>t; while(t--) { cin>>n; cout<<a[n]<<endl; } }
C 解法, 执行用时: 192ms, 内存消耗: 504K, 提交时间: 2022-02-04 13:48:09
#include<stdio.h> int main() { long long int a,b,c[10000],d=0; for(long long int i=19;;i++){ a=i; b=0; while(a){ b=b+a%10; a=a/10;} if(b==10){ c[d]=i; d++;} if(d==10001) break;} int e,f; scanf("%d",&e); while(e--) { scanf("%d",&f); printf("%d\n",c[f-1]); } return 0; }