fzu - 1752 Problem 1752 A^B mod C

来源:互联网 发布:电话变声软件 编辑:程序博客网 时间:2024/06/13 07:40


题意 :A^B%C(快速幂)

注意:直接由快速幂会溢出,要做优化不让溢出

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef unsigned __int64 LL;LL solve (LL s,LL t,LL m)//防溢出{    LL ans = 0;    while(t)    {      if(t&1)      {         ans += s;         if(ans >=m)ans -= m;      }       s += s;       if(s >= m)s -= m;       t /= 2;    }    return ans%m;}LL fun(LL a,LL n,LL m){    if(n == 1) return a % m;    if(n == 0)return 1;    LL temp = fun(a,n/2,m);    temp = solve(temp,temp,m);    if(n % 2 == 1)    {       temp = solve (temp,a,m);    }    return temp%m;}int main(){    LL n,m,a;    while(~scanf("%I64u%I64u%I64u",&a,&n,&m))    {        printf("%I64u\n",fun(a,n,m));    }}


0 0
原创粉丝点击