• 数值的整数次方


    题目描述:
    给定一个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
    ");  
                }  
                else{  
                    printf("%.2ef
    ",result);  
                }  
            }  
        }  
        return 0;  
    }  
  • 相关阅读:
    mq概念
    Mac Xampp 安装redis 及 安装php-redis扩展
    rabbitmq死信队列(延迟队列)demo
    rabbitmq生产与消费测试
    RabbitMQ各方法详解
    Mac git old mode 100644 new mode 100755 mac目录权限问题
    mac安装redis
    msql创建用户并授权
    mac apache php 访问失败
    Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube
  • 原文地址:https://www.cnblogs.com/tgycoder/p/5236353.html
Copyright © 2020-2023  润新知