ickchen2

PKU1730 简单数论加枚举

/*一道很简单的数论题,求可以开的最大N次方,直接用POW函数,不过在比较答案是,DOUBLE的比较,精度要用1E-12,还有很囧的就是,居然他有负数的存在,题目明明说了最小是2,不知道哪里来的负数*/
#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
#include<algorithm>
#define M 1000
using namespace std;
int main()
{
    freopen("in.txt","r",stdin);
    long long n;
    int ans;
    while(scanf("%I64d",&n)&&n)
    {
        if(n>0)
        for(int i=32;i>=1;i--)
        {
            double b=pow(n,1.0/i);
            double b1=floor(b);
            double b2=ceil(b);
           // double sum=1;
            if(fabs(b-b1)<1e-12||fabs(b2-b)<1e-12){printf("%d\n",i);break;}
        }
        else
        {
            n=-n;
            for(int i=32;i>=1;i--)
            {
                if(i%2==0)continue;
                double b=pow(n,1.0/i);
                double b1=floor(b);
                double b2=ceil(b);
                //double sum=1;
                if(fabs(b-b1)<1e-12||fabs(b2-b)<1e-12){printf("%d\n",i);break;}
            }
        }
        //printf("%d\n",ans);
    }
}

posted on 2008-11-03 10:39 神之子 阅读(290) 评论(0)  编辑 收藏 引用 所属分类: ACM题解


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜