写代码是一种艺术,甚于蒙娜丽莎的微笑!

不拼搏,枉少年!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
复制代码
题目描述:
给定一个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
复制代码

 

复制代码
#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;  
}  
复制代码

 

posted on 2016-03-02 20:21  RunningSnail  阅读(334)  评论(0)    收藏  举报
编辑推荐:
· 源码浅析:SpringBoot main方法结束为什么程序不停止
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 本可避免的P1事故:Nginx变更导致网关请求均响应400
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
阅读排行:
· AI 的力量,开发者的翅膀:欢迎使用字节旗下的 AI 原生开发工具 TRAE
· 「闲聊文」准大三的我,思前想后还是不搞java了
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 千万级的大表如何新增字段?
· 《HelloGitHub》第 112 期
点击右上角即可分享
微信分享提示