UVA1583

//UVA1583 - Digit Generator
//題目:数x加上它各个位数之和得到一个y,x为y的最小生成元。求一个数的最小生成元
//分析:打表,查表
#include<stdio.h>
#define MAXN 100005
int ans[MAXN] = {0};
int main(){
	int T, n;
	for(int i = 1; i<MAXN; i++){
		int x = i, y = i;
		while(x>0){ y += x%10; x /= 10;}
		//*1.该数的大小加上它本身已经越界即超过100000
		//*2.用更小的生成元替换原来的生成元,得到最小生成元
		if(ans[y] == 0 || i < ans[y])ans[y] = i;	
	}
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		printf("%d
",ans[n]);
	}
	return 0;
}

原文地址:https://www.cnblogs.com/gwj1314/p/9444935.html