算法竞赛入门经典-第三章例题

例题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]);//直接查表即可。
    }
}

猜你喜欢

转载自www.cnblogs.com/liuzey/p/9672324.html