pow 関数で計算すると誤差で死ぬ。
これを1発で通せる人は凄いと思う。
bool is_prime(lli n) { if (n == 0 || n == 1) return false; for (lli i = 2; i * i <= n; ++i) { if (n % i == 0) return false; } return true; } class StrongPrimePower { public: vector <int> baseAndExponent(string n) { lli m; istringstream iss(n); iss >> m; vector<int> v; for (int p = 2; p <= 60; ++p) { double a = pow(m, 1.0 / p); lli x = (int)floor(a + 0.5); lli b = 1; for (int i = 0; i < (int)p; ++i) { b *= x; } if (is_prime(x) && m == b) { v.push_back(x); v.push_back(p); } } return v; } };