UVA 10622 Perfect P-th Powers

时间:2023-03-10 01:44:13
UVA 10622 Perfect P-th Powers

https://vjudge.net/problem/UVA-10622

将n分解质因数,指数的gcd就是答案

如果n是负数,将答案除2至奇数

原理:(a*b)^p=a^p*b^p

#include<cmath>
#include<cstdio>
#include<algorithm>
#define N 65550
using namespace std;
int gcd(int a,int b) { return !b ? a : gcd(b,a%b); }
int main()
{
int m,sum,ans;
long long n,nn;
while(scanf("%lld",&nn)!=EOF)
{
if(!nn) return ;
n=abs(nn);
m=sqrt(n);
ans=;
for(int i=;i<=m;i++)
{
sum=;
if(n%i==)
while(n%i==) sum++,n/=i;
ans=gcd(ans,sum);
}
if(!ans)
{
printf("1\n");
continue;
}
if(nn<)
while(!(ans&)) ans>>=;
printf("%d\n",ans);
} }