#include<iostream>
#include<cstdio>
#define M 1000000007
using namespace std;
long long int power(int a,int b)
{
if(b==0)
return 1;
else if(b==1)
return a;
else if(b%2==0)
return power((a*a)%M,b/2);
else
return (power((a*a)%M,b/2)*a)%M;
}
この関数では、a = 2、b> 31を渡すと、常に0が返されます。b= 31の場合、147483634を取得しました。問題がどこにあるかわかりますか?
または、数値の大きな累乗を計算するための別の方法を教えてください。