69,382
社区成员
发帖
与我相关
我的任务
分享
#b为正整数
def power(a, b):
if b == 1:
return a
remainder = b % 2
half = (b - remainder) / 2
value = power(a, half)
value *= value
if remainder == 1:
value *= a
return value
#include<iostream>
using namespace std;
int f(int a,int b,int n);
int main()
{
cout<<f(19999,2999896,17)<<endl;
return 0;
}
int f(int a,int b,int n)
{
if(a<0||b<0||n<0)return -1;
int binary[32];
int index=0;
while(b)
{
if(b&1)
{
binary[index]=1;
}
else
{
binary[index]=0;
}
index++;
b>>=1;
}
index--;
int result=1;
while(index>=0)
{
result=(result*result)%n;
if(binary[index])
{
result=(result*a)%n;
}
index--;
}
return result;
}