HDU 1163(即周赛F题)数论数根

来源:互联网 发布:linux查看tcp端口占用 编辑:程序博客网 时间:2024/06/05 14:41

这题刚开始不知道是数论中的知识,数论没学多少,然后用了老方法,老超时,然后后面才知道有结论的……感觉数论有点神啊……

数论:

某数的九余数等于该数各位和的九余数,如此循环调用,正好与本题求数根相同。
因此求数根就是该数的九余数。
不过当该数能被九整除时,数根应该为九。

两数乘积的九余数等于两数九余数的乘积(当然必要时需要再次求余)。

#include <iostream>#include <map>#include <deque>#include <queue>#include <stack>#include <string>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <map>#include <set>using namespace std;int main(){    int n,i,s;    while(cin>>n&&n)    {        s=1;        for(i=0;i<n;i++)            s=s*n%9;        cout<<(s==0?9:s)<<endl;    }    return 0;}

有个牛人更加快……几句就搞定了!!!
#include<stdio.h>int main(){    int n;    char s[20]="914942971915947978";    while(scanf("%d",&n),n)    {        printf("%c\n",s[n%18]);    }      return 0;  } 


原创粉丝点击