I have written a code to calculate a to the power of b and then calculate pow(a,b) % 1000000007
1000000007 = pow(10,9) + 7
a
and b
are integers in range 1 <= a,b <= 10000000
obviously, pow(a,b) is a very huge number so I think overflowing is happening in my code. how can i optimize and fix my code?
#include <stdio.h>
#include <math.h>
unsigned long long int power(unsigned long long int a, unsigned long long int b)
{
if (power(a,b) < 1000000007)
{
if (b == 1)
return a;
else
return a * power(a, b-1);
}
else if (power(a,b) == 1000000007)
return 0;
else
return a * power(a, b-1) % 1000000007;
}
int main()
{
unsigned long long int a, b;
scanf("%llu %llu", &a, &b);
printf("%llu", power(a,b));
return 0;
}