题目:

一个整数N,|N| >= 2, 如果存在整数x,使得N = x * x * x... (p个x相乘) =x^p,则称N是p次方数,给定32位内的整数N,求最大的P。例如N=5,输出1,N=36则输出2。

分析:

其实我是水过的。X从2到sqrt(N)便利,如果res=logN/logX在容许误差内就返回(int)(res+0.5).

注意:

1.输入为2147483648。

2.输入为负数时候。得到的(int)(res+0.5)要是奇数才返回,不然返回1(很明显)。

3.容差要足够小。

最后:

祝大家轻松水过。

过了好长一段时间了,贴上代码吧。

/*******************************************************************************/
/* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
* Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
* Encoding : UTF8
* All Rights Reserved by yaolong.
*****************************************************************************/
/* Description:给定N(可能为负数),求最大的p满足pow(x,p)=N,x可能为负数
***************************************************************
*****************************************************************************/
/* Analysis: 从N=2到sqrt(N)遍历,允许容差控制在0.00000000001,在32位数中
总是能正确******
状态:通过。
测评网址:http://hero.csdn.net/Question/Details?ID=299&ExamID=294
***********************************************************/
/*****************************************************************************/
//*
#include <stdio.h>
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
#define RC 0.00000000001
#define MAX_INT 2147483648
int isF(double t)
{
//四舍五入
int near_res=(int) (t+0.5); //允许误差
if(abs(near_res-t)<RC)
{
return near_res;
} return -1; }
class Test
{
public:
static int give (int n)
{ bool _f=true;
if(n<0)
{
_f=false; //是负数,因为负数的话,所得指数必须是奇数。
}
//边界2147483648
if(n==MAX_INT)
return 31; long long int num=abs(n);//取绝对值
double sqrtn=sqrt(num*1.0);//避免多次的开根,取对数
double logN=log((double)(num)); for(int i=2; i<=sqrtn; i++)
{
double tmp=logN/log(1.0*i);
int res=isF(tmp);
if(-1!=res)
{ if(!_f) //为负数
{
if(res%2==1)
return res; }
else
{
//为正数
return res;
}
}
}
return 1; }
}; //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
int main()
{
int n;
cout<<Test::give(2147483648)<<endl;
while(cin>>n&&n) //测试数据
cout<<Test::give(n)<<endl; return 0;
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。

P次方数 英雄会 csdn 高校俱乐部的更多相关文章

  1. 朋友的礼物(英雄会,csdn,高校俱乐部)信封问题,匹配模型

    前言: 首先这是一题解,但是重点最代码之后,有耐心的可以直接从代码后看. 上题目:n个人,每个人都有一件礼物想送给他人,他们决定把礼物混在一起,然后每个人随机拿走一件,问恰好有m个人拿到的礼物恰好是自 ...

  2. CSDN 高校俱乐部: 排列搜索

    CSDN 高校俱乐部/英雄会 题目: 设数组a包含n个元素恰好是0..n - 1的一个排列,给定b[0],b[1],b[2],b[3]问有多少个0..n-1的排列a,满足(a[a[b[0]]]*b[0 ...

  3. CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学

    2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...

  4. (csdn高校俱乐部编程挑战)2的补码

    题目详情 在计算机中,整数是以2的补码的形式给出的. 给出整数A和B,如果计算机是32位机.求从A到B之间的全部二进制数中,一共用了多少个1. 输入格式: 多组数据,每组数据一行,由两个整数A,B, ...

  5. CSDN高校俱乐部第二届战神杯第二题题解

    两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍.要保证结果非负, 首先得到0的人获胜. 比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8. ...

  6. N的N次方(高校俱乐部)

    最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...

  7. [LeetCode] Power of Four 判断4的次方数

    Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example: Gi ...

  8. [LeetCode] Power of Three 判断3的次方数

    Given an integer, write a function to determine if it is a power of three. Follow up:Could you do it ...

  9. [LeetCode] Power of Two 判断2的次方数

    Given an integer, write a function to determine if it is a power of two. Hint: Could you solve it in ...

随机推荐

  1. 向老项目JSP集成JSTL遇到的问题

    today,I Failed to load or instantiate TagLibraryValidator class - JstlCoreTLV <%@ page contentTyp ...

  2. bzoj 1876 [SDOI2009]SuperGCD(高精度+更相减损)

    1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2384  Solved: 806[Submit][Sta ...

  3. MTK Android Driver知识大全

    一.Display 1.lcm 相关概念1.1) MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口).DPI(也叫RGB接口).DSI.在使用DSI接口时,目前75/77都只支持到2条da ...

  4. YII 小模块功能

    //1,使用updateCounters()来更新计数器字段. Book::model()->updateCounters(array('download_count'=>1),':id= ...

  5. sql server 分组统计数据

    说明:group by是sql中对数据表中的数据进行分组的,在select列表中出现的字段必须全部出现在group by 字段中,出现在聚合函数中的字段在group by中可有可无,没有出现在sele ...

  6. WPF DataGrid 合并单元格

    在网上搜索wpf合并单元格,一直没搜索到,没办法,只能自己想办法搞定了.其实就是DataGrid套DataGrid,为了方便支持Column拖动,在合并的DataGridColumn那一列的Heade ...

  7. 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法

    在用本地的navicat连接服务器的mysql数据库时候出现下面的问题: 解决的方法: 解决方法: 1.改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhos ...

  8. 深入了解Angularjs指令中的ngModel

    关于AngularJs的指令的知识学习,请参考... 这次我们接上次没讲完的知识继续. 前端人员在设计表单逻辑时, 在大部分情况下,我们需要为表单定义很多指令, 比如比较两个input内的值是否相同, ...

  9. OPENCV中滑动条的使用

    //文中存在两种不同的图像的平滑类型.一类是彩色图像,还有一类是灰度图像.经证明,两种均能够 #include<cv.h> #include<highgui.h> #inclu ...

  10. [TypeScript ] What Happens to Compiled Interfaces

    This lesson covers using your first TypeScript Interface and what happens to the Interface when it i ...