题目链接:
https://vjudge.net/problem/UVA-1583
只需枚举1-100000所有整数m,标记“m加上m的各数字之和得到一个生成元m”,最后查表即可。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int arr[100000];
int main() {
//freopen("i.txt","r", stdin);
memset(arr,0,sizeof(arr));
int n, i, j;
scanf("%d",&n);
for(i = 0; i < 100000; i++) {
int a = i%10;
int b = i/10%10;
int c = i/100%10;
int d = i/1000%10;
int e = i/10000;
int sum = i+a+b+c+d+e;
//以生成元作为数组下标,方便查表,不然肯定超时
if(!arr[sum]) arr[sum] = i;
}
for(i = 0;i < n; i++) {
int x;
scanf("%d",&x);
printf("%d\n",arr[x]);
}
return 0;
}