版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/82025569
Uva-340. Digit Generator 题解
欢迎访问我的Uva题解目录哦https://blog.csdn.net/richenyunqi/article/details/81149109
题目描述
题意解析
如果数字x加上x的各位数字之和为y,则称x是y的一个生成元。给出n个数,要求找出每个数字的最小生成元,如果没有生成元输出0
算法设计
一次性列举0~100,000这些数作为生成元时对应的生成数字,并存储在一个数组中,最后查表即可。
C++代码
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=(a);i<(b);++i)//for循环的一种用宏表示的简写方式
int A[100100];
int main(){
_for(i,0,100000){
string s=to_string(i);
int k=i;
_for(j,0,s.size()) k+=s[j]-'0';
if(A[k]==0)
A[k]=i;
}
int N,input;
scanf("%d",&N);
while(N--){
scanf("%d",&input);
printf("%d\n",A[input]);
}
return 0;
}