我已经呆了一个多小时,但我仍然不知道为什么这个函数返回0。
希望另外一双眼睛可以帮助我找出问题所在。
#include <bits/stdc++.h>
using namespace std;
int power(int x, int y, int p)
{
// cout << x << " " << y << " " << p << " " << res << endl;
if(x==0)
return 0;
if(y==0)
return 0;
long res = 1;
if(y%2 == 0){
res = power(x, y/2, p);
res = (res*res)%p;
}
else{
res = x%p;
res = (res*power(x, y-1, p) % p) % p;
}
cout << x << " " << y << " " << p << " " << res << endl;
return int((res+p)%p);
}
int main() {
cout << power(2, 100000, 1000000007);
return 0;
}
答案 0 :(得分:0)
这应该更改:
if(y==0)
return 1;