题目
Description
计算2013bc mod 10000000
Input
两个整数 b, c (0 < b, c < 2147483648)
Output
输出2013bc mod 10000000的结果
Sample Input
2012 2011
Sample Output
3307281
思路
题目都说了……
遇到的问题
忘了快速幂怎么写了……复习一下
于是又敲了一遍ryc师哥讲的快速幂,希望至少到周日不会忘掉……
代码
#include<iostream>
#include<cstdio>
using namespace std;
const long long d=10000000;
int a=2013;
long long ksm(long long a,long long b)
{
long long i,ans=1;
for(i=1;i<=b;i++)
{
while(b!=0)
{
if(b%2!=0) ans=((ans%d)*(a%d))%d;
a=((a%d)*(a%d))%d;
b=b/2;
}
}
return ans;
}
int main()
{
long long b,c,ans;
scanf("%lld %lld",&b,&c);
ans=ksm(a,b);
printf("%lld",ksm(ans,c));
return 0;
}