题目:
如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小
生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。
心得:
1、数据很大,需要使用打表。
2、学会了一种对数组进行初始化的新方式:memset(n,int a,sizeof(n))《包含在头文件string.h里》可以最快速地对数组进行初始化。
代码:
#include"stdio.h"
#include"string.h"
int a[100005];
int main()
{
memset(a,0,sizeof(a));
int i;
for(i=1;i<=100005;i++)
{
int s=i,j=i;
while(j>0)
{
s+=j%10;
j/=10;
}
if(a[s]==0)
a[s]=i;
else if(s<a[s])
a[s]=i;
}
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
}