数值的整数幂
来源:互联网 发布:模拟基金软件app 编辑:程序博客网 时间:2024/05/01 22:01
- 题目描述:
给定一个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
#include<stdio.h>#include<stdlib.h>#include<math.h>bool equal(double,double);//判断两个double变量是否相等 double powerWithUnsignedExp(double,unsigned int); bool isInvalidInput=false;//判断是否底数是0的标志 double power(double base,int exponent){isInvalidInput=false;if(equal(base,0.0)&&exponent<0){isInvalidInput=true;return 0.0;}unsigned int absExponent = (unsigned int)(exponent);if(exponent<0)absExponent=(unsigned int)(-exponent);//次数是负数 double result=powerWithUnsignedExp(base,absExponent);if(exponent<0)result=1.0/result;return result;} double powerWithUnsignedExp(double base,unsigned int exponent){if(exponent==0)return 1;if(exponent==1)return base;double result=powerWithUnsignedExp(base,exponent>>1);//减少乘法的次数,1,2,4,8,16.。。 result*=result;if(exponent&0x1==1)result*=base;return result;}bool equal(double num1,double num2){if(num1-num2>-0.0000001&&(num1-num2<0.0000001))return true;elsereturn false;} int main(){int n,exp;double base;while(scanf("%d",&n)!=EOF){int i;for(i=0;i<n;i++){isInvalidInput=false;scanf("%lf %d",&base,&exp);double result =power(base,exp); if(!isInvalidInput) printf("%.2ef\n",result); else printf("INF\n"); }}return 0;}
结果:
0 0
- 数值的整数幂
- 数值的整数次幂
- 数值的整数次幂
- 计算数值的整数次幂
- 数值的整数次方(求幂)
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 如何在ListView中添加CheckBox
- hive安装及使用
- POJ 1236 Network of Schools (强连通 出度 入度)
- 【iOS】UIDynamic
- model/view学习全
- 数值的整数幂
- HDU2602 Bone Collector
- VS2012编写附加库的配置文件
- visual studio 2010 破解版 破解方法
- 【linux整理笔记系列】将编译的warning警告信息输出到文件中
- 水晶报表初体验
- hdu 1145 So you want to be a 2n-aire?
- 一维01背包和完全背包对比代码
- 中国剩余定理(转载)