hdu 1097 A hard puzzle(快速幂取模模板题)

http://acm.hdu.edu.cn/showproblem.php?pid=1097

快速幂取模我理解就是将其幂不断的二分后往前推得过程,奇数的时候先分出一个来变成偶数。。。

杭电怎么不认识long long了??改成__int64就对了。。

#include <iostream>

#include <cstdio>

using namespace std;

__int64 result(__int64 a,__int64 b,int m)

{

    long long d,t;



    d=1;

    t=a;

    while (b>0)

    {

        if (b%2==1)

            d=(d*t)%m;

        b/=2;

        t=(t*t)%m;

    }



    return d;

}

int main()

{

   __int64 a,b;

    while(~scanf("%I64d%I64d",&a,&b))

    {

         printf("%I64d\n",result(a,b,10));

    }

    return 0;

}

  

你可能感兴趣的:(HDU)