ZJU2124 Perfect Pth Powers - 简单题 pow函数

来源:互联网 发布:java开发api接口实例 编辑:程序博客网 时间:2024/04/28 10:38

 题目描述:

给出一个int范围的整数x,求x=b^p的最大p值。

分析:

因为x在int范围内,所以p的取值是1到31。枚举一下,用pow函数对x开方,然后验证即可。

错了好几次……原因是数据可能是2^31,并且里面有负数,但是题目明明说“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”,郁闷了……

不能太相信题目,更不能太相信自己的英语水平……

/*ZJU2124 Perfect Pth Powers*/#include #include #define int64 long long#define I64d "%lld"int64 POW(int b,int p){    int i;    int64 s=1;    for(i=0;i< p;i++) s*=b;    return s;}int main(){    int64 x,n;    int i,y;        while(scanf(I64d,&n),n){        x=n>0?n:-n;        for(i=32;i>=2;i--){            y=(int)(pow((double)x,1.0/i)+0.5);            if(POW(y,i)==x){                if(n<0 && i%2==0) continue;                else printf("%d/n",i);                break;            }        }        if(i==1) printf("1/n");    }        return 0;}
原创粉丝点击