例题3-5 UVa1583
1.大量重复处理相同数据可以通过预先处理随后查表来优化。
2.通过取余和除模来提取数字都某一位。
#include<stdio.h> #include<string.h> int number[100100]; int main(void){ memset(number,0,sizeof(number)); for(int i=1;i<100009;i++){//通过枚举,避免重复操作,提高效率。 int tmp=i; int now=i; while(now>0){ tmp+=now%10;//通过取余和除模可以提取数字的每一个位数。 now/=10; } if(number[tmp]==0||i<number[tmp]) number[tmp]=i; } int n,q; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&q); printf("%d\n",number[q]);//直接查表即可。 } }