poj 1730 Perfect Pth Powers
2013-07-14 19:47
309 查看
这个有2种方法。
一种是通过枚举p的值(p的范围是从1-32),这样不会超时,再就是注意下精度用1e-8就可以了,还有要注意负数的处理……
第二种方法就是分解素数因子,求出因子的指数的最大公约数就是答案了,但是我这测试没错,提交超时……
一种是通过枚举p的值(p的范围是从1-32),这样不会超时,再就是注意下精度用1e-8就可以了,还有要注意负数的处理……
#include<iostream> #include<stdio.h> #include<algorithm> #include<cmath> #include<iomanip> #include<string> using namespace std; int fun(double n) { int p=32,f=1; if(n<0) { p=31; f=2; n=-n; } for(;p>=1;p-=f) { double a=pow(n,1.0/p); long t1=a; long t2=a+1; if(a-t1<=1e-12||t2-a<=1e-12) break; } return p; } int main() { int x,p; while(cin>>x&&x) { p=fun(x); cout<<p<<endl; } return 0; }
第二种方法就是分解素数因子,求出因子的指数的最大公约数就是答案了,但是我这测试没错,提交超时……
#include<iostream> #include<stdio.h> #include<algorithm> #include<vector> #include<cmath> #include<iomanip> #include<string> using namespace std; int prime[100001],a[100001]; void init() { int i,j,k=0; for(i=2;i<=100000;i++) { if(!a[i]) { prime[k++]=i; for(j=i+i;j<=100000;j+=i) a[j]=1; } } } int gcd(int a,int b) { int c; if(a<b) swap(a,b); while(b) { c=a; a=b; b=c%b; } return a; } int main() { int n,i,j; bool flag; init(); while(scanf("%d",&n),n) { flag=0; if(n<0) { flag=1; n=-n; } vector<int> key; for(i=0;prime[i]*prime[i]<=n;i++) { if(n%prime[i]==0) { int c=0; for(;n%prime[i]==0;n/=prime[i],c++); key.push_back(c); } } if(n>1) key.push_back(1); int sum=key[0]; for(i=1;i<key.size();i++) sum=gcd(sum,key[i]); if(flag) { while(sum%2==0) sum/=2; } printf("%d\n",sum); } return 0; }
相关文章推荐
- POJ-1730 Perfect Pth Powers(思维:大数分解素因子)
- POJ 1730 Perfect Pth Powers (枚举||分解质因子)
- [TLE] POJ 1730 Perfect Pth Powers
- POJ_1730_Perfect Pth Powers
- poj 1730 Perfect Pth Powers
- POJ 1730 Perfect Pth Powers
- poj1730 素数 Perfect Pth Powers
- poj1730——Perfect Pth Powers
- (Relax 1.12)POJ 1730 Perfect Pth Powers(在x=b^p的情况下,求最大的p)
- POJ 1730 Perfect Pth Powers(暴力枚举)
- poj 1730 -- Perfect Pth Powers
- POJ 1730 Perfect Pth Powers (求最大p,x=b^p)
- POJ 1730 Perfect Pth Powers
- [暑假集训--数论]poj1730 Perfect Pth Powers
- POJ 1730 Perfect Pth Powers(唯一分解定理)
- Poj 1730 Perfect Pth Powers (数论 GCD)
- POJ 1730 Perfect Pth Powers(素数筛选法)
- poj 1730 Perfect Pth Powers
- poj 1730 Perfect Pth Powers(枚举)
- POJ1730 Perfect Pth Powers