POJ 1730 幂指数的最大值 + 精度 + C函数
来源:互联网 发布:淘宝号可以转让吗 编辑:程序博客网 时间:2024/04/30 12:14
这道题,唉,经验不足哇,之前想的若干方法,均超时了,从枚举因子 1 - > n^(1/2) 开始,TLE,再想了一个,分解成所有质因子,判断最小的质因子个数是否整除其它质因子个数,显然和前面一样,n 取很大的时候就不行了,也会TLE..于是就要想更好的方法,可能是我做题太少了,就去网上找了一下别人解法,一下子反应过来了,干脆直接开根号,判断得到的值是否是整数...就要用到 pow( n, 1.0 / i ) ; pow() 函数不仅可以求幂,也是可以开根号的...于是最后就是精度控制的问题了,这提示我第一次接触到精度控制的题目,没有经验,也不知道如何控制,又去查了一下,原来可以用几个 C 语言函数来实现的..
ceil ( ) 函数的用法,
函数名: ceil
用 法: int ceil(double x); 功 能: 返回大于或者等于指定表达式的最小整数 头文件:math.hfloor( )函数的用法
函数名: floor
功 能: 返回小于或者等于指定表达式的最大整数 用 法: double floor(double x); 头文件:math.h#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
const double eps=1e-12; //// 精度控制
int main(){
double n;
while(scanf("%lf",&n),n){
int flag=1;
double ans;
if(n>0){
for(int i=31;i>=1;i--){
double sum=pow(n,1.0/i);
double up = ceil(sum), down = floor(sum) ;
if(fabs(up-sum)<eps || fabs(down-sum)<eps){ //// 精度控制
cout<<i<<endl;
break;
}
}
}
else {
n=-n;
for(int i=31;i>0;i -= 2){
double sum=pow(n,1.0/i);
double up = ceil(sum), down = floor(sum) ;
if(fabs(up-sum)<eps || fabs(down-sum)<eps){
cout<<i<<endl;
break;
}
}
}
}
}
- POJ 1730 幂指数的最大值 + 精度 + C函数
- C语言 任意精度整数运算包--指数运算的迭代
- 【C++】求取两个整数、三个整数,两个双精度数、三个双精度数的最大值【原创技术】
- Unity3D中float的精度和最大值
- C++ 指数幂函数
- poj 3734 指数型生成函数
- 精度的函数
- 经典的指数生成函数
- 经典的指数生成函数
- [C语言]最简单的一个求最大值的函数
- 三角、指数、对数、幂函数
- C 编写求一个数组中最大值的函数
- 求函数的最大值
- 求函数的最大值
- poj 3372(判断是不是2的指数)
- 算法竞赛入门经典 浮点数的最大值和精度
- 关于 Sleep函数的精度
- sleep函数的精度 不精确
- 在Windows下操作Linux的多标签工具
- HTML5 缓存: cache manifest
- iis6.0 php5.2.17 mysql 安装 win2003
- CreateCompatibleDC
- C# 多个DataTable导入到Excel多张Sheet表
- POJ 1730 幂指数的最大值 + 精度 + C函数
- Windows 2003 IIS6+PHP5+MySQL5+Zend环境搭建图文教程-
- 批量编译fla文件
- 存储过程和触发器
- ubuntu中ibus-pinyin的完整设置
- 自定义摄像机应用实现之预览界面展示
- Linux 内核信号表
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- poj 2935 Basic Wall Maze bfs