题目描述:

给定一个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)的更多相关文章

  1. 《剑指offer》 数值的整数次方

    本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ...

  2. 【剑指Offer】数值的整数次方 解题报告(Python)

    [剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. 【Java】 剑指offer(15) 数值的整数次方

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 实现函数double Power(double base, int ...

  4. (3)剑指Offer之数值的整数次方和调整数组元素顺序

    一 数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 问题解析: 这道题算是比较麻烦和难一点的一个了.我这里采 ...

  5. 【剑指offer】数值的整数次方

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ...

  6. Go语言实现:【剑指offer】数值的整数次方

    该题目来源于牛客网<剑指offer>专题. 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不 ...

  7. 剑指 Offer 16. 数值的整数次方

    实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 来源:力扣(LeetCode) 链接 ...

  8. 剑指Offer 12. 数值的整数次方 (其他)

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ...

  9. 剑指offer:数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ...

随机推荐

  1. bzoj3931: [CQOI2015]网络吞吐量

    将最短路图找出来,跑maxflow即可.有注意到数据范围.然后输出的时候%dWA了三次QAQ... #include<cstdio> #include<cstring> #in ...

  2. createElement 创建DOM元素

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  3. 安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn

    TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行. TableLayout的列数等于含有最多子控件的TableRow的列数.如第一Table ...

  4. 转:MVC3系列:~Html.BeginForm与Ajax.BeginForm

    Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...

  5. phonegap archive 报错 Cordova/CDVViewController.h' file not found

    在BuildSettings->Header Search Paths  增加如下路径,问题解决 $(OBJROOT)/UninstalledProducts/include "$(O ...

  6. linux下打开chm文件的方法

    windows中,通常情况下,chm文件可以使用系统自带的程序打开,但是linux就没有那么幸运了,那么,如何在linux下打开chm 文件呢?有小编来为您介绍介绍,本篇,小编以ubuntu环境为例 ...

  7. 【大数加法】POJ-1503、NYOJ-103

    1503:Integer Inquiry 总时间限制:  1000ms 内存限制:  65536kB 描述 One of the first users of BIT's new supercompu ...

  8. DevExpress控件使用小结 z

    .TextEditor(barEditItem)取文本 string editValue = barEditItem1.EditValue.ToString(); //错误,返回null string ...

  9. LAMP网站架构分析

    转自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包 ...

  10. cocos2d - CCParallaxNode 例子

    CGSize winSize = [[CCDirector sharedDirector] winSize]; CCParallaxNode * node = [CCParallaxNodenode] ...