剑指OFFER之数值的整数次方(九度OJ1514)
时间:2022-04-22
本文章向大家介绍剑指OFFER之数值的整数次方(九度OJ1514),主要内容包括题目描述:、输入:、输出:、样例输入:、样例输出:、解题思路:、代码:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
输入:
输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。
输出:
对应每个测试案例, 输出一个浮点数代表答案,保留两位小数即可。
样例输入:
5
1.0 10
0.0 -5
1.0 0
1.2 5
2.0 -1
样例输出:
1.00e+00f
INF
1.00e+00f
2.49e+00f
5.00e-01f
解题思路:
这道题看似简单,其实BUG重重。要注意的问题:
1 输入double类型的时候要用%lf
2 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况
3 机器中浮点数的比较是由误差的,因此double类型的比较,不能用简单的a==0来比较。一般的比较方式是,相减的差在一个很小的区间内,我们就认为是相等的。方法如下:
(float1- float2 > -0.0000001) && (float1 -float2 < 0.0000001)
4 机器输出的格式:
%e用于输出 3.071e+002这种格式的
%.2e 用于输出3.07e+002
%.2ef用于输出3.07e+002f
这样,基本的问题就都解决了。
代码:
#include <stdio.h>
double test(double b,int e);
int flag=0;
int main(void){
int n,exp;
double base;
while(scanf("%d",&n) != EOF && n>=0){
while(n--){
flag = 0;
scanf("%lf %d",&base,&exp);
double result = test(base,exp);
if(!result && flag)
printf("INFn");
else
printf("%.2efn",result);
}
}
}
double test(double b,int e){
double base = b;
if(e<0){
e = -e;
flag = 1;
}
if(e == 0)
return 1;
while(--e)
b *= base;
if(flag){
if((base - 0.0 > -0.0000001) && (base -0.0 < 0.0000001))
return 0;
return 1.0/b;
}
else
return b;
}
/**************************************************************
Problem: 1514
User: xhalo
Language: C
Result: Accepted
Time:80 ms
Memory:912 kb
****************************************************************/
- ASP.NET MVC的Model元数据与Model模板:模板的获取与执行策略
- python3.6抓取100知乎用户头像详解(四)
- 从运营商小广告到HTTPS
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]
- 区块链:为什么它不仅仅是比特币?
- Java Mail(二):JavaMail介绍及发送一封简单邮件
- ASP.NET MVC Controller激活系统详解:总体设计
- .NET Core采用的全新配置系统[7]: 将配置保存在数据库中
- Selenium3+Python3环境部署
- Java Mail(三):Session、Message详解
- .NET Core采用的全新配置系统[8]: 如何实现配置与源文件的同步
- 四个问答让你秒懂区块链原理及应用
- .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?
- 【机器学习实战】第11章 使用 Apriori 算法进行关联分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 初识SpringBoot
- Controller 层中,到底是 返回界面 还是JSON?
- IDEA控制台中文乱码解决
- helm——部署私有库
- 查找数组中最大值的5种方法!(动图演示)
- EasyRTC-SFU之mediasoup-demo在 Windows上的编译安装
- 翻转二叉树
- optimizer.zero_grad()
- helm——工具使用举例
- Helm工具安装配置——2.14.3
- 论程序的健壮性——就看Redis
- SAP Spartacus路由参数的默认配置
- 这次用近万字的讲解带你干掉堆!
- Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)
- Postgresql 从那个点看要优于 ORACLE SQL SERVER MYSQL