#include <iostream>
#include <cmath>
bool pPow(int x, int n) {
int m = (int)pow(x, 1.0/n);
if (x == pow(m, n))
return true;
/********************************/
if (x == pow(m + 1, n))
return true;
/********************************/
return false;
}
int const y_ulimit = 10;
int const n_ulimit = 10;
int main() {
/* y^n = x */
for (int y = 2; y <= y_ulimit; y++) {
int x = 1;
for (int n = 1; n <= n_ulimit; n++) {
x *= y;
if (!pPow(x, n)) {
std::cout << "pPow(" << x << "," << n <<") == false!!" << std::endl;
std::cout << y << "^" << n << ": " << x << std::endl;
}
}
}
return 0;
}
/* end */
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgpib29sIHBQb3coaW50IHgsIGludCBuKSB7CiAgaW50IG0gPSAoaW50KXBvdyh4LCAxLjAvbik7CiAgaWYgKHggPT0gcG93KG0sIG4pKQogICAgcmV0dXJuIHRydWU7Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICBpZiAoeCA9PSBwb3cobSArIDEsIG4pKQogICAgcmV0dXJuIHRydWU7Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICByZXR1cm4gZmFsc2U7Cn0KCmludCBjb25zdCB5X3VsaW1pdCA9IDEwOwppbnQgY29uc3Qgbl91bGltaXQgPSAxMDsKaW50IG1haW4oKSB7CiAgLyogeV5uID0geCAqLwogIGZvciAoaW50IHkgPSAyOyB5IDw9IHlfdWxpbWl0OyB5KyspIHsKICAgIGludCB4ID0gMTsKICAgIGZvciAoaW50IG4gPSAxOyBuIDw9IG5fdWxpbWl0OyBuKyspIHsKICAgICAgeCAqPSB5OwogICAgICBpZiAoIXBQb3coeCwgbikpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgInBQb3coIiA8PCB4IDw8ICIsIiA8PCBuIDw8IikgPT0gZmFsc2UhISIgPDwgc3RkOjplbmRsOwogICAgICAgIHN0ZDo6Y291dCA8PCB5IDw8ICJeIiA8PCBuIDw8ICI6ICIgPDwgeCA8PCBzdGQ6OmVuZGw7CiAgICAgIH0KICAgIH0gICAgICAgIAogIH0gICAgICAgIAogIHJldHVybiAwOwp9Ci8qIGVuZCAqLwo=