#include <stdio.h>
// Iterative solution to calculate pow(x, n) using
// binary operators
int power(int x, unsigned n)
{
// initialize result by 1
// do till n is not zero
while (n)
{
// if n is odd, multiply result by x
if (n & 1)
// divide n by 2
n = n >> 1;
// multiply x by itself
x = x * x;
}
// return result
}
// main function
int main(void)
{
int x = -2;
unsigned n = 10;
printf("pow(%d,%d) = %d", x
, n
, power
(x
, n
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBJdGVyYXRpdmUgc29sdXRpb24gdG8gY2FsY3VsYXRlIHBvdyh4LCBuKSB1c2luZwovLyBiaW5hcnkgb3BlcmF0b3JzCmludCBwb3dlcihpbnQgeCwgdW5zaWduZWQgbikKewogICAgLy8gaW5pdGlhbGl6ZSByZXN1bHQgYnkgMQogICAgaW50IHBvdyA9IDE7CgogICAgLy8gZG8gdGlsbCBuIGlzIG5vdCB6ZXJvCiAgICB3aGlsZSAobikKICAgIHsKICAgICAgICAvLyBpZiBuIGlzIG9kZCwgbXVsdGlwbHkgcmVzdWx0IGJ5IHgKICAgICAgICBpZiAobiAmIDEpCiAgICAgICAgICAgIHBvdyAqPSB4OwoKICAgICAgICAvLyBkaXZpZGUgbiBieSAyCiAgICAgICAgbiA9IG4gPj4gMTsKCiAgICAgICAgLy8gbXVsdGlwbHkgeCBieSBpdHNlbGYKICAgICAgICB4ID0geCAqIHg7CiAgICB9CgogICAgLy8gcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuIHBvdzsKfQoKLy8gbWFpbiBmdW5jdGlvbgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgeCA9IC0yOwogICAgdW5zaWduZWQgbiA9IDEwOwoKICAgIHByaW50ZigicG93KCVkLCVkKSA9ICVkIiwgeCwgbiwgcG93ZXIoeCwgbikpOwoKICAgIHJldHVybiAwOwp9