#include <iostream>
#include <cmath>
#include <tuple>
double MakeNumber(double N, std::size_t P) {
double V = N;
for (std::size_t i = 0; i < P; i++) {
V = std::pow(V, N);
}
return V;
}
std::tuple<double, std::size_t > CrashNumber(double N,std::size_t P) {
double V = N;
std::size_t i = 0;
while (N >= P){
N = std::pow(N, 1 / (double)P);
i++;
}
return { N,i };
}
int main() {
std::size_t X = 3;
std::size_t Y = 5;
double N = MakeNumber(X, Y);
double N10;
std::size_t C = 0;
std::tie(N10,C) = CrashNumber(N, 10);
std::cout << N <<'('<<X<<','<<Y<<')'<< " -> " << '(' << N10 << ',' << C <<')'<< std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx0dXBsZT4KCmRvdWJsZSBNYWtlTnVtYmVyKGRvdWJsZSBOLCBzdGQ6OnNpemVfdCBQKSB7Cglkb3VibGUgViA9IE47CgoJZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IFA7IGkrKykgewoJCVYgPSBzdGQ6OnBvdyhWLCBOKTsKCX0KCglyZXR1cm4gVjsKfQoKc3RkOjp0dXBsZTxkb3VibGUsIHN0ZDo6c2l6ZV90ID4gQ3Jhc2hOdW1iZXIoZG91YmxlIE4sc3RkOjpzaXplX3QgUCkgewoKCWRvdWJsZSBWID0gTjsKCXN0ZDo6c2l6ZV90IGkgPSAwOwoJIHdoaWxlIChOID49IFApewoKCQkgTiA9IHN0ZDo6cG93KE4sIDEgLyAoZG91YmxlKVApOwoJCSBpKys7CgkgfQoKCSByZXR1cm4geyBOLGkgfTsKfQoKaW50IG1haW4oKSB7CglzdGQ6OnNpemVfdCBYID0gMzsKCXN0ZDo6c2l6ZV90IFkgPSA1OwoKCWRvdWJsZSBOID0gTWFrZU51bWJlcihYLCBZKTsKCglkb3VibGUgTjEwOwoJc3RkOjpzaXplX3QgQyA9IDA7CgkJCglzdGQ6OnRpZShOMTAsQykJPSBDcmFzaE51bWJlcihOLCAxMCk7CgoJc3RkOjpjb3V0IDw8IE4gPDwnKCc8PFg8PCcsJzw8WTw8JyknPDwgIiAtPiAiIDw8ICcoJyA8PCBOMTAgPDwgJywnIDw8IEMgPDwnKSc8PCBzdGQ6OmVuZGw7Cn0=