zoj 2124 || poj 1730 Perfect Pth Powers
2011-02-01 12:22
459 查看
数论,求使得 x = b^p的最大的p。
这题之前用pow神马的,一直过不了。昨天看到了,有个想法,想试试。
先求质因数,质因数每个的个数肯定和p有关。
求出之后,想了想,呀,这不就是求这些质因数重复个数的最大公约数嘛!!!激动~!
写了 = =。。WA。但是数据都能过。还用了long long也过不了。搜了下,说这题有负的数据,FT!!!
改了改。如果是负数的话,质因数重复个数如果是偶数一直除2一直到奇数,因为如果不这么弄的话,求出来的最大公约可能就是2的倍数了,而这个对于负数来说是不可能的。然后再求最大公约数即可。用int就好。
这题之前用pow神马的,一直过不了。昨天看到了,有个想法,想试试。
先求质因数,质因数每个的个数肯定和p有关。
求出之后,想了想,呀,这不就是求这些质因数重复个数的最大公约数嘛!!!激动~!
写了 = =。。WA。但是数据都能过。还用了long long也过不了。搜了下,说这题有负的数据,FT!!!
改了改。如果是负数的话,质因数重复个数如果是偶数一直除2一直到奇数,因为如果不这么弄的话,求出来的最大公约可能就是2的倍数了,而这个对于负数来说是不可能的。然后再求最大公约数即可。用int就好。
#include <cstdio> #include <cstdlib> #include <iostream> #include <string.h> #include <math.h> #include <limits.h> #define MAX 50000 using namespace std; int f[MAX]; int num[MAX]; int pri[MAX]; int cou; void init() { int i,j; cou = 0; memset(num,0,sizeof(num)); for(i=2; i<MAX; i++) for(j=2; j*i<MAX; j++) if( num[i] == 0 ) num[j*i] = 1; for(i=2; i<MAX; i++) if( num[i] == 0 ) pri[cou++] = i; } int gcd(int n,int m) { return m == 0 ? n : gcd(m,n%m); } int Analy(int n) { int fac = 0; int i = 0 ,num; int x = n; while( n != 1 ) { num = 0; if( abs(pri[i]) > sqrt(fabs((double)n)) ) break; if( n % pri[i] == 0 ) { while( n % pri[i] == 0 ) { num++; n /= pri[i]; } f[fac] = num; fac++; } i++; } if( fac == 0 ) return 1; if( x < 0 ) for(i=0; i<fac; i++) while( f[i] % 2 == 0 ) f[i] /= 2; if( fac == 1 ) return f[0]; int tmp = gcd(f[0],f[1]); for(i=2; i<fac; i++) tmp = gcd(f[i],tmp); return tmp; } int main() { init(); int n; int ans; while( scanf("%d",&n) != EOF && n ) { memset(f,0,sizeof(f)); ans = Analy(n); printf("%d/n",ans); } return 0; }
相关文章推荐
- poj1730--Perfect Pth Powers
- poj 1730 Perfect Pth Powers
- poj 1730 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(思维:大数分解素因子)
- POJ-1730 Perfect Pth Powers 解题报告(数论) 最大开方数
- POJ_1730_Perfect Pth Powers
- poj 1730 Perfect Pth Powers
- POJ-1730-Perfect Pth Powers
- POJ1730 Perfect Pth Powers
- POJ 1730 Perfect Pth Powers(唯一分解定理)
- [暑假集训--数论]poj1730 Perfect Pth Powers
- poj 1730 -- Perfect Pth Powers
- zoj 2124 Perfect Pth Powers
- POJ 1730 Perfect Pth Powers(素数筛选法)
- POJ-1730 Perfect Pth Powers 分解质因子
- poj 1730 Perfect Pth Powers
- POJ 1730 Perfect Pth Powers - 找一个数最多是第几方数...暴力解决...