Digit Generator

第一眼看到这题,会觉得这道题很简单,只要每一个值枚举就好了,但是他并不是一次性的去得出结果,多组数据,每次执行都需要n次,当n非常大的时候,就会超时,所以我们不妨将他们的数据全部保存起来,比如当1是generator时,他的结果是x,将x作为下标,将1作为value,其实有点类似于哈希表,每次输入一个数时,只要给出下标就可以立刻找出generator,这样每次都需要执行n次就变成了只需要执行n次。
代码如下:
#include<stdio.h> #include<string.h> int a[100050]; int main(void) { int i,T,j; memset(a, 0, sizeof(a)); for (i = 0; i < 100005; i++) { int m = i; int sum = i; while (m) { sum += m % 10; m /= 10; } if(a[sum] == 0||i<a[sum]) a[sum] = i; } scanf("%d", &T); for (j = 0; j < T; j++) { int h; scanf("%d", &h); printf("%d\n", a[h]); } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号