I am stuck with probably simple question. I got 3 large numbers(A,B,C), all integers and i need to do the following: power A to B and modulo the result by C, and then check if t
try this approach
double a,b,c;
a = 1124124124254234;
b = 1124124124254234 * 5;
c = 1124124124254234 * 2;
double power = pow(a,b);
double mod = fmod(power, c);
if (mod != 1){
printf("Something!\n");
}
The min and max sizes for Double are -1.7*10^308 and 1.7*10^308 respectively. If you need bigger you could try long long.
Not sure why you are using fmod. But this should do what you want.
double power = ( pow(A, B) ) % C;
if (power != 1){
printf("Something!\n");
}
Try this (in order to avoid arithmetic overflow):
unsigned long long power = 1;
A %= C;
while (B > 0)
{
power = (power * A) % C;
B--;
}
You can further improve the runtime performance with this:
unsigned long long power = 1;
A %= C;
while (B > 0)
{
if (B & 1)
power = (power * A) % C;
B >>= 1;
A = (A * A) % C;
}