zoukankan      html  css  js  c++  java
  • 032数值的整数次方(keep it up)

    剑指offer中题目:http://ac.jobdu.com/problem.php?

    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
    ");
    		//	printf("INF
    ");
    		//	continue;
    		//}
    
    		if (fabs(Base) < PRECISION && Exp < 0)
    		{
    			printf("INF
    ");
    			continue;
    		}
    
    		double Result = getBaseExp(Base, Exp);
    		printf("%.2ef
    ", Result);
    	}
    	return 0;
    }


  • 相关阅读:
    linux中的中断处理框架
    linux中的异常处理流程
    如何使用次设备号控制多个LED
    装载内核模块时,自动添加设备文件
    第一个字符设备驱动程序
    网络文件系统
    点击全选或全不选,一个页面有多个全选和全不选的时候
    ubuntu 20.04 遇到的问题
    Ubuntu20.04 初始没有的东西
    Ubuntu 20 安装pycharm备忘
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5252890.html
Copyright © 2011-2022 走看看