如果x加上x的各个数字之和得到y,就说x是y生成元。给出n(1<=n<=100000)求出最小生成元,无解是输出0。例如 n = 216 输出198
#include<stdio.h>
#include<string.h>
#define maxn 100005
int ans[maxn];
int main()
{
int T , n,m,x,y;
memset(ans ,0 ,sizeof(ans));
for(m = 1;m<maxn;m++)
{
x = m; y = m;
while(x>0)
{
y+=x%10;
x/=10;
}
if(ans[y]==0||m<ans[y])
ans[y] = m;
}//先将从1到10000的生成元都求出来 ,造表,然后在查表
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return 0;
}