Poj.1730 Perfect Pth Powers【数学】 2015/11/13

来源:互联网 发布:板式家具折单软件 编辑:程序博客网 时间:2024/06/05 11:22
Perfect Pth Powers
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 17232 Accepted: 3946

Description

We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, for some integer b, x = b3. More generally, x is a perfect pth power if, for some integer b, x = bp. Given an integer x you are to determine the largest p such that x is a perfect pth power.

Input

Each test case is given by a line of input containing x. The value of x will have magnitude at least 2 and be within the range of a (32-bit) int in C, C++, and Java. A line containing 0 follows the last test case.

Output

For each test case, output a line giving the largest integer p such that x is a perfect pth power.

Sample Input

171073741824250

Sample Output

1302

Source

Waterloo local 2004.01.31
不明所以,为何要加0.1???
#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#define eps 1e-6using namespace std;int main(){    int n,t,p;    while( ~scanf("%d",&n) ){        if( n == 1 || n == -1 ) continue;        if( n == 0 ) break;        if( n > 0 ){            for( int i = 31 ; i >= 1 ; --i ){                t = (int)(pow(1.0*n,1.0/i)+0.1);                p = (int)(pow(1.0*t,1.0*i)+0.1);                if( n == p ){                    printf("%d\n",i);                    break;                }            }        }        else{            n = -n;            for( int i = 31 ; i >= 1 ; i-=2 ){                t = (int)(pow(1.0*n,1.0/i)+0.1);                p = (int)(pow(1.0*t,1.0*i)+0.1);                if( n == p ){                    printf("%d\n",i);                    break;                }            }        }    }    return 0;}


0 0
原创粉丝点击