问题:
如果x+x的各个数字之和得到y,就是说x是y的生成元。给出n(1<=n<=100000),
求最小生成元。无解输出0.例如,n=216,121,2005时的解分别是198,0,1979.
下图是这个题的标准答案,我给改变了一点,如果看不懂就多看几遍,不是特别难。
官方的那个题解我就没复制,别人的博客里有官方题解,就不再赘述了。
我就写官方的那个答案,我觉得有一点不妥。
这才是最精简的答案:
#include<iostream>
#include<cstring>
using namespace std;
int ans[100010];
int main(){
int n;
for(int i = 1; i < 100001 ; i++){ //i是生成元
int x = i , y = i; //y是答案元
while(x){
y += (x % 10);
x /= 10;
}
if(ans[y] == 0)
ans[y] = i;
}
while(cin>>n)
cout<<ans[n]<<endl;
return 0;
}