剑指Offer之数值的整数次方
来源:互联网 发布:ubuntu 16.04设置分区 编辑:程序博客网 时间:2024/05/16 15:16
- 题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
- 输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。
- 输出:
对应每个测试案例,
输出一个浮点数代表答案,保留两位小数即可。
- 样例输入:
51.0 100.0 -51.0 01.2 52.0 -1
- 样例输出:
1.00e+00fINF1.00e+00f2.49e+00f5.00e-01f
- 提示:
请特别注意不同的编译器对于科学计数法格式输出中指数位数的差别。建议使用九度Online Judge所使用的编译环境。
/********************************** 日期:2013-11-9* 作者:SJF0115* 题号: 题目1514:数值的整数次方* 来源:http://ac.jobdu.com/problem.php?pid=1514* 结果:AC* 来源:剑指Offer* 总结:**********************************/#include<iostream>#include<stdio.h>#include<string>using namespace std;int flag = 1;//判断double类型数据是否相等int equal(double n,double m){ if((n - m) > -0.0000001 && (n - m) < 0.0000001){ return 1; } else{ return 0; }}double Power(double n,int exponent){ int i; double result = 1.0; //0^负数次方 if(equal(n,0.0) && exponent < 0){ flag = 0; return 0.0; } else{ flag = 1; int absExponent = exponent; if(exponent < 0){ absExponent = - exponent; } for(i = 0;i < absExponent;i++){ result *= n; } if(exponent < 0){ result = 1.0 / result; } return result; }}int main(){int i,n,num,exponent;double base;while(scanf("%d",&n) != EOF){ for(i = 0;i < n;i++){ scanf("%lf %d",&base,&exponent); double result = Power(base,exponent); if(flag == 0){ printf("INF\n"); } else{ printf("%.2ef\n",result); } }} return 0;}
【另一种方法】
/********************************** 日期:2013-11-9* 作者:SJF0115* 题号: 题目1514:数值的整数次方* 来源:http://ac.jobdu.com/problem.php?pid=1514* 结果:AC* 来源:剑指Offer* 总结:**********************************/#include<iostream>#include<stdio.h>#include<string>using namespace std;int flag = 1;//判断double类型数据是否相等int equal(double n,double m){ if((n - m) > -0.0000001 && (n - m) < 0.0000001){ return 1; } else{ return 0; }}double PowerOfPositive(double base,int exponent){ if(exponent == 0){ return 1; } else if(exponent == 1){ return base; } else{ //右移一位相等于除以2 double result = PowerOfPositive(base,exponent >> 1); result *= result; //判断奇偶性 if(exponent & 0x1 == 1){ result *= base; } return result; }}double Power(double n,int exponent){ int i; double result = 1.0; //0^负数次方 if(equal(n,0.0) && exponent < 0){ flag = 0; return 0.0; } else{ flag = 1; int absExponent = exponent; if(exponent < 0){ absExponent = - exponent; } result = PowerOfPositive(n,absExponent); if(exponent < 0){ result = 1.0 / result; } return result; }}int main(){int i,n,num,exponent;double base;while(scanf("%d",&n) != EOF){ for(i = 0;i < n;i++){ scanf("%lf %d",&base,&exponent); double result = Power(base,exponent); if(flag == 0){ printf("INF\n"); } else{ printf("%.2ef\n",result); } }} return 0;}
- 剑指Offer之数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指Offer之 - 数值的整数次方
- 【剑指offer】之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指Offer算法实现之十一:数值的整数次方
- 剑指offer系列之十一:数值的整数次方
- 剑指offer(十一)之数值的整数次方
- 剑指offer之面试题11:数值的整数次方
- 剑指offer之面试题11数值的整数次方
- 数值的整数次方[剑指offer]之python实现
- 剑指Offer之面试题11:数值的整数次方
- 剑指offer之十一---数值的整数次方
- 剑指offer:数值的整数次方
- 【剑指offer】数值的整数次方
- [剑指offer]Q11:数值的整数次方
- 【剑指offer】数值的整数次方
- C#动态执行函数:利用反射实现
- 报了这一个错,原来是找不到这个tld文件,把tld放到目录下就ok
- 获取最大值(经典!)
- OCP-1Z0-053-V12.02-609题
- 有关IE8样式不兼容css样式问题处理方式--充分利用IE8
- 剑指Offer之数值的整数次方
- Ubuntu笔记本屏幕亮度调节问题
- SVN版本冲突解决详解
- C# System.Reflection
- 16进制的字符串转数值函数
- SVN分支与合并使用教程——Tortoise SVN客户端
- 红豆子和绿豆子
- (Floyed-Warshall13.1.2)POJ 2240 Arbitrage(Floyed-Warshall公式的使用||求所有货币之间的最佳兑换方案)
- Mahout系列之----距离度量