poj 1730 Perfect Pth Powers
Perfect Pth PowersTime Limit: 1000MS Memory Limit: 10000K
Total Submissions: 15918 Accepted: 3605
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
Waterloo local 2004.01.31
//184K 32MS C++ 694B //我会告诉你我WA了很多次吗- - //直接暴力的思想,时间复杂度为O(sqrt(n)) #include<stdio.h> #include<math.h> __int64 _abs(__int64 a) { return a>0?a:-a; } int main(void) { __int64 n; while(scanf("%I64d",&n),n) { __int64 i,flag; __int64 ans; if(n<0) flag=-1; else flag=1; __int64 m=(__int64)sqrt(_abs(n)*1.0); for(i=2;i<=m;i++){ ans=1; __int64 temp=i*flag; while(_abs(temp)<_abs(n)){ //每一个数都试一次 temp*=(i*flag); ans++; } if(temp==n) break;//符合条件跳出循环 else ans=1; } printf("%d\n",ans); } return 0; }