#include < string >
#include < vector >
#include < set >
#include < algorithm >
#include < memory.h >
#include < cmath >
#include < cstdio >
using namespace std;
long long num;
bool is ( int p, int q)
... {
long long temp=1;
for (int i=0;i!=q;++i)
temp*=(long long)p;
if (temp!=num) return false;
for (int i=2;i*i<=p;++i)
if (p%i==0) return false;
return true;
}
class StrongPrimePower ... {
public:
vector <int> baseAndExponent(string n)
...{
vector<int> ans;
sscanf(n.c_str(),"%lld",&num);
double f=num;
for (int i=2;i!=65;++i)...{
int p=pow(f,(double)1/i)+0.5;
if (is(p,i))...{
ans.push_back(p);
ans.push_back(i);
return ans;
}
}
return ans;
}
} ;
Problem Statement | |||||||||||||
NOTE: This problem statement contains superscripts that may not display properly if viewed outside of the applet. A number which can be represented as pq, where p is a prime number and q is an integer greater than 0, is called a prime power. If q is larger than 1, we call the number a strong prime power. You are given an integer n. If n is a strong prime power, return an vector <int> containing exactly two elements. The first element is p and the second element is q. If n is not a strong prime power, return an empty vector <int>. | |||||||||||||
Definition | |||||||||||||
| |||||||||||||
Constraints | |||||||||||||
- | n will contain digits ('0' - '9') only. | ||||||||||||
- | n will represent an integer between 2 and 10^18, inclusive. | ||||||||||||
- | n will have no leading zeros. | ||||||||||||
Examples | |||||||||||||
0) | |||||||||||||
| |||||||||||||
1) | |||||||||||||
| |||||||||||||
2) | |||||||||||||
| |||||||||||||
3) | |||||||||||||
| |||||||||||||
4) | |||||||||||||
| |||||||||||||
5) | |||||||||||||
|
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.