1431: 快速幂入门
时间限制: 1 Sec 内存限制: 128 MB题目描述
快速幂为我们的幂运算提供了一个很快的方法。这道题要求你练习刚刚学会的快速幂。即计算a^n。我们都知道整数能够表示的范围有限,所以这里要求让结果对100000007取模。
输入
多组输入数据,请处理至文件结尾 每组数据包含两个整数,a与n,输入保证a和n都在32位整数能够表示的范围内,a,n>=0
输出
a^n对100000007取模的值,每组数据的输出占一行。
样例输入
2 2
9 2
3 3
样例输出
4
81
27
提示
来源
分析:
1、如题,考察快速幂。
2、取模,我在取模时犯了一个小小错误(痛苦)。
LANGUAGE:C++
CODE:
#include <iostream>
typedef long long ll;
const int mod=100000007;
using namespace std;
ll poww(ll a,ll b)
{
ll r=1,base=a%mod;
while(b!=0)
{
if(b&1)
{
r*=base; //我一开始写的是r*=base%mod;,注意优先级。
r%=mod;
}
base*=base%mod;
base%=mod;
b>>=1;
// cout<<r<<endl;
}
return r%mod;
}
int main()
{
// freopen("1431in.txt","r",stdin);
// freopen("1431out.txt","w",stdout);
ll m,n;
while(cin>>m>>n)
{
cout<<poww(m,n)<<endl;
}
return 0;
}