UVA 1583 打表 数论

来源:互联网 发布:国产cad软件哪款好用 编辑:程序博客网 时间:2024/05/17 18:13
#include<stdio.h>#include<string.h> int hash[100001];int main(){memset(hash,0,sizeof(hash));    for(int m=1;m<=100000;m++){        int x=m,y=m;        while(x){y+=x%10;x/=10;}        if(hash[y]==0||m<hash[y])hash[y]=m;}    int T;   scanf("%d",&T);    while(T--){        int num;        scanf("%d",&num);        printf("%d\n",hash[num]);}    return 0;}


拍大腿的思路:对每个输入的数,遍历n-1到1查最小生成元,不过这样的代价就是每个输入都要重新从头到尾查一遍

过脑子的思路,所以可以事先将所有答案算出来,记录到哈希表中,输入后通过查找哈希表直接输出答案。