剑指OFFER之数值的整数次方(九度OJ1514)
题目描述:
-
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
输入:
-
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。
输出:
-
对应每个测试案例,
输出一个浮点数代表答案,保留两位小数即可。
样例输入:
1.0
0.0 -
1.0
1.2
2.0 -
样例输出:
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用于输出 .071e+002这种格式的 %.2e 用于输出3.07e+ %.2ef用于输出3.07e+002f
这样,基本的问题就都解决了。
代码:
#include <stdio.h>
double test(double b,int e);
int flag=;
int main(void){
int n,exp;
double base;
while(scanf("%d",&n) != EOF && n>=){
while(n--){
flag = ;
scanf("%lf %d",&base,&exp);
double result = test(base,exp);
if(!result && flag)
printf("INF\n");
else
printf("%.2ef\n",result);
}
}
}
double test(double b,int e){
double base = b;
if(e<){
e = -e;
flag = ;
}
if(e == )
return ;
while(--e)
b *= base;
if(flag){
if((base - 0.0 > -0.0000001) && (base -0.0 < 0.0000001))
return ;
return 1.0/b;
}
else
return b;
}
/**************************************************************
Problem: 1514
User: xhalo
Language: C
Result: Accepted
Time:80 ms
Memory:912 kb
****************************************************************/
剑指OFFER之数值的整数次方(九度OJ1514)的更多相关文章
- 《剑指offer》 数值的整数次方
本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ...
- 【剑指Offer】数值的整数次方 解题报告(Python)
[剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- 【Java】 剑指offer(15) 数值的整数次方
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 实现函数double Power(double base, int ...
- (3)剑指Offer之数值的整数次方和调整数组元素顺序
一 数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 问题解析: 这道题算是比较麻烦和难一点的一个了.我这里采 ...
- 【剑指offer】数值的整数次方
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ...
- Go语言实现:【剑指offer】数值的整数次方
该题目来源于牛客网<剑指offer>专题. 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不 ...
- 剑指 Offer 16. 数值的整数次方
实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 来源:力扣(LeetCode) 链接 ...
- 剑指Offer 12. 数值的整数次方 (其他)
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ...
- 剑指offer:数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ...
随机推荐
- HTTP请求头host解析
Host: 域名 Host表示请求的服务器网址: request headers中的host字段 例如有user.xiaoqiang.com,hotel.xiaoqiang.com 现在需要登录后 ...
- Java [Leetcode 337]House Robber III
题目描述: The thief has found himself a new place for his thievery again. There is only one entrance to ...
- JavaEE参考示例 SpringSide 4.0 GA版杀青
SpringSide是以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,较佳实践的总结与演示. 经过漫长的7个月和6个R ...
- POJ 1251 Jungle Roads
题意:嗯……没看题……看了眼图……求个最小生成树. 解法:kruskal. 代码: #include<stdio.h> #include<iostream> #include& ...
- Cake slicing
题意: n*m的方格中有k个点,现在要把方格分开使得每个点在一个部分,每分一次花费边长的费用,求完成花的最小费用 分析: dp[sx][sy][ex][ey]表示分割起点(sx,sy)终点(ex,ey ...
- 在DataTable 中增加一列
//在这里需要增加一个列. DataColumn column = dt.Columns.Add("行号", Type.GetType("S ...
- 多校7 HDU5818 Joint Stacks
多校7 HDU5818 Joint Stacks 题意:n次操作.模拟栈的操作,合并的以后,每个栈里的元素以入栈顺序排列 思路:开三个栈,并且用到了merge函数 O(n)的复杂度 #include ...
- HDU 1708
思路 :二位数组维护数目. #include<iostream> #include<stdio.h> #include<stdlib.h> #include< ...
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
- Google App Engine Deployment 相关问题
1.GAE instance上传成功之后可以正常运行的情况下.在Google账户中“关联的应用和网站”,撤销Google App Engine appcfg对Google账户的访问权限. 再次上传时, ...