题目:如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n,求最小生成元,无解则输出0.
n=216,121,2005时的解分别为198,0,1979
代码
#include<stdio.h>
#include<string.h>
#define maxn 100005
int main(){
int a[maxn];
int x=0,y=0;
int p;
memset(a,0,sizeof(a)); //要带上string.h头文件
for(int m=0;m<maxn;m++){ //一次性枚举出maxn内所有正整数m
x=m;y=m; //x是各位之和
while(y){
x+=y%10;
y/=10;
}
if(!a[x]||m<a[x])
a[x]=m;
}
scanf("%d",&p);
printf("%d\n",a[p]);
return 0;
}