POJ1730 Perfect Pth Powers (math)

来源:互联网 发布:数学建模中的十大算法 编辑:程序博客网 时间:2024/05/18 17:57

you can find the original description here
This problem let us to find whether can be exactly a number ‘s k power,we can have the given number x to depart with prime factor,and we let answer be the gcd of all exponent , and we need to take care of the negative number just make sure that the answer is odd.

#include <iostream>#include <vector>#include <cstring>#include <algorithm>#define ll __int64using namespace std;const int N = 1e6+1;vector<int> prime;int notprime[N];void ola_prime(){    notprime[1] = 1;    for(int i = 2; i<N; i++)    {        if(notprime[i] == 0)        {            prime.push_back(i);        }        for(int j = 0; j<prime.size() && prime[j]* i <N ; j++)        {            notprime[prime[j]*i] = 1;            if(i % prime[j] == 0)            {                break;            }        }    }}int main(){    ola_prime();    ll n = 0;    while(cin>>n)    {        if(!n) break;        int ans = 0,sig = 1;        if(n<0)        {            sig = 0;            n = -n;        }        int e = 0;        for(int i = 0;i<prime.size() && prime[i] <= n;i++)        {            if(n%prime[i] == 0)            {                e = 0;                while(n%prime[i] == 0)                {                    n/=prime[i];                    e++;                }                ans = __gcd(ans,e);            }        }        if(n >1) ans = __gcd(ans,1);        if(!sig)        {            while(ans%2 == 0) ans/=2;        }        cout<<ans<<endl;    }    return 0;}/*43 74 12 18 13 74 22 18 43 54 12 28 91 110 3*/
原创粉丝点击