hdu 1061 数论

来源:互联网 发布:马穆鲁克王朝知乎 编辑:程序博客网 时间:2024/06/06 04:37

由于n比较大,可以用到二分优化,我在算法的书上看到过,后来很多oj都有这样的水题了,只能说数论这东东,看过了就都是水题,没看过真心难想

代码如下:

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int modexp(int a,long long b,int n)//a^b%n,就是这个,可以看到是用的二分优化滴{    int t=1;    a %=n;    while(b>0)    {        if(b%2==1) t =(t*a)%n;        a=(a*a)%n;        b /=2;    }    return t;}int main(){    //freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    long long n;    int ans,i,ncase;    cin>>ncase;    while(ncase--)    {        cin>>n;        ans=n%10;        ans=modexp(ans,n,10);        cout<<ans<<endl;    }    return 0;}