1019:高次幂运算
描述
某天SW的基友WJ问了一个问题
要求计算给出的数字n,求2的n次方
输入
输入一个数字N(0 <= N <= 100000000000),多组文件数据
输出
输出2的N次方,为防止结果超出,运算过程和结果对100000取模,注意过程中的取模。就是要保证整个数据都不会超过前面这个数
样例输入
5
2
样例输出
32
4
#include<iostream>
using namespace std;
long long fastPower(long long base, long long power)
//base 底数 power 指数 快速幂运算
{
long long result = 1;
while (power > 0)
{
if (power % 2 == 0)
{
//如果指数为偶数
power = power / 2;
//把指数缩小为一半
base = base * base % 100000;
//底数变成原来的平方
}
else
{
//如果指数为奇数
power = power - 1;
//把指数减去1,使其变成一个偶数
result = result * base % 100000;
//此时记得要把指数为奇数时分离出来的底数的一次方收集好
power = power / 2;
//此时指数为偶数,可以继续执行操作
base = base * base % 100000;
}
}
return result;
}
int main()
{
long long int n;
while (cin >> n)
{
cout << fastPower(2, n) << endl;
}
return 0;
}