如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1<=n<=100000),求最小生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。
样例输入:
3
216
121
2005
样例输出:
198
0
1979
#include<stdio.h>
#include<string.h>
#define max 100005
int a[max];
int main()
{
int n,t,i;
memset(a,0,sizeof(a));
for(i=1;i<max;i++)
{
int y=i;
int x=i;
while(x>0)
{
y+=x%10;
x/=10;
}
if(a[y]==0||i<a[y])
a[y]=i;
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
}