Perfect Pth PowersTime Limit: 1000MS Memory Limit: 10000K
Total Submissions: 15918 Accepted: 3605DescriptionWe 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. InputEach 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. OutputFor each test case, output a line giving the largest integer p such that x is a perfect pth power.Sample Input171073741824250Sample Output1302SourceWaterloo local 2004.01.31//184K 32MS C++ 694B //我会告诉你我WA了很多次吗- -//直接暴力的思想,时间复杂度为O(sqrt(n)) #include#include __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;}