Perfect Pth Powers
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 17685 | Accepted: 4068 |
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
17 1073741824 25 0
Sample Output
1 30 2
Source
#include<stdio.h> #include<math.h> int main() { int n; while(~scanf("%d",&n) && n) { if(n > 0) { for(int i = 31; i >= 1; i--) { int t = (int)(pow(n*1.0,1.0/i) + 0.1);//先开最大次方 int x = (int)(pow(t*1.0,1.0*i) + 0.1); if(n == x)//判断重新求的数与原数相等就是完美次数 { printf("%d ",i); break; } } } else { n = -n;//考虑负数的情况 for(int i = 31; i >= 1; i-=2) { int t = (int)(pow(n*1.0,1.0/i) + 0.1); int x = (int)(pow(t*1.0,1.0*i) + 0.1); if(n == x) { printf("%d ",i); break; } } } } return 0; }
http://blog.csdn.net/u013647282/article/details/37816089
大神做的