#include <stdio.h>
// Naive recursive solution to calculate pow(x, n)
// using Divide & Conquer
int power(int x, unsigned n)
{
// base condition
if (n == 0)
return 1;
if (n & 1) // if n is odd
return x * power(x, n / 2) * power(x, n / 2);
// else n is even
return power(x, n / 2) * power(x, n / 2);
}
// main function
int main(void)
{
int x = -2;
unsigned n = 10;
printf("pow(%d,%d) = %d", x
, n
, power
(x
, n
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBOYWl2ZSByZWN1cnNpdmUgc29sdXRpb24gdG8gY2FsY3VsYXRlIHBvdyh4LCBuKQovLyB1c2luZyBEaXZpZGUgJiBDb25xdWVyCmludCBwb3dlcihpbnQgeCwgdW5zaWduZWQgbikKewogICAgLy8gYmFzZSBjb25kaXRpb24KICAgIGlmIChuID09IDApCiAgICAgICAgcmV0dXJuIDE7CgogICAgaWYgKG4gJiAxKSAvLyBpZiBuIGlzIG9kZAogICAgICAgIHJldHVybiB4ICogcG93ZXIoeCwgbiAvIDIpICogcG93ZXIoeCwgbiAvIDIpOwoKICAgIC8vIGVsc2UgbiBpcyBldmVuCiAgICByZXR1cm4gcG93ZXIoeCwgbiAvIDIpICogcG93ZXIoeCwgbiAvIDIpOwp9CgovLyBtYWluIGZ1bmN0aW9uCmludCBtYWluKHZvaWQpCnsKICAgIGludCB4ID0gLTI7CiAgICB1bnNpZ25lZCBuID0gMTA7CgogICAgcHJpbnRmKCJwb3coJWQsJWQpID0gJWQiLCB4LCBuLCBwb3dlcih4LCBuKSk7CgogICAgcmV0dXJuIDA7Cn0=