hdu 还是幂取模(费马小定理 快速幂)

http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=18447&pid=1001

已经过了时间不知道能不能ac 不过思路应该是没错的

 

题意:给定A,B,C,计算(A^(B^C))%100000007 (已知100000007是素数)

思路:费马小定理 :当 mod为质数 且 gcd(a,mod)=1 时  a^(p-1) %p =1

        所以此题可以先运算 mi= b^c%(mod-1)

        再算出 ans= a^mi % mod

 

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll __int64
#define mod 100000007

ll power_mod(ll a,ll b,ll c)
{
    ll r=1,d=a;
    while(b)
    {
        if(b%2==1) r=(r*d)%c;
        d=(d*d)%c;
        b/=2;
    }
    return r;
}
int main()
{
    ll a,b,c;
    ll mi,ans;
    while(scanf("%I64d%I64d%I64d",&a,&b,&c)!=EOF)
    {

        mi=power_mod(b,c,mod-1);
        ans=power_mod(a,mi,mod);
        printf("%I64d\n",ans);
    }
    return 0;
}

  

posted @ 2015-05-05 21:13  sola94  阅读(259)  评论(0)    收藏  举报