032数值的整数次方(keep it up)
2016-03-08 09:48
435 查看
剑指offer中题目:http://ac.jobdu.com/problem.php?
pid=1514
题目描写叙述:
给定一个double类型的浮点数base和int类型的整数exponent。
求base的exponent次方。
输入:
输入可能包括多个測试例子。
对于每一个输入文件,第一行输入一个整数T,表示測试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。
输出:
相应每一个測试案例,
输出一个浮点数代表答案。保留两位小数就可以。
例子输入:
例子输出:
这个题wrong了几次,就是由于abs和fabs晕了。
。。。
。
代码:
pid=1514
题目描写叙述:
给定一个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
这个题wrong了几次,就是由于abs和fabs晕了。
。。。
。
代码:
#include <stdio.h> #include <math.h> #define PRECISION 0.00000001 double powN(double vBase, int vN) { double Result = 1.0; while (vN) { if (vN%2) { Result *= vBase; --vN; } else { vBase *= vBase; vN >>= 1; } } return Result; } double getBaseExp(double vBase, int vExp) { int N = abs(vExp); double Result = powN(vBase, N); if (vExp < 0) { return 1.0 / Result; } else if (vExp == 0) { return 1.0; } return Result; } int main() { int N; int Exp; double Base; scanf("%d", &N); while (N--) { scanf("%lf %d", &Base, &Exp); //if (abs(Base) < PRECISION && Exp < 0)//这样就错了 //{ // //printf("error\n"); // printf("INF\n"); // continue; //} if (fabs(Base) < PRECISION && Exp < 0) { printf("INF\n"); continue; } double Result = getBaseExp(Base, Exp); printf("%.2ef\n", Result); } return 0; }
相关文章推荐
- 使用C#操作Oracle Spatial的SDO_GEOMETRY对像(读取和写入)
- 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- 【python】编程语言入门经典100例--25
- php bootstrap实现简单登录
- 解析property文件
- go语言编辑器LiteIDE配置
- pie学习笔记
- 图像腐蚀和膨胀
- 带时分秒的JS日历控
- 到底有多少个对象,先填坑再说
- pie学习笔记
- Uploadfile 文件上传控件使用方法
- FZU 1408位图(bfs)
- seaJs的模块定义和模块加载浅析
- split分割字符串(按两种符号分割)
- struts2 搜索顺序
- iOS开发--HTTP协议
- 表UITableView
- axure注册码
- HDFS路径问题