如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小 生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。 【分析】 本题看起来是个数学题,实则不然。假设所求生成元为m。不难发现m
#include<stdio.h>
#include<string.h>
#define maxn 100005
int ans[maxn];
int main() {
for(int i=1;i<=maxn-1;++i)
{
int n=i,m=i;
while(n>0){
m+=n%10;
n/=10;
}
if(ans[m]==0||i<ans[m])
ans[m]=i;
}
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&t);
printf("%d\n",ans[t]);
}
return 0;
}