列表

详情


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;
}

上一题