人生得意须尽欢,莫使金樽空对月。数值的整数次方

2024-01-24 13:30

本文主要是介绍人生得意须尽欢,莫使金樽空对月。数值的整数次方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
来源:牛客网

[编程题]数值的整数次方.
热度指数:614061时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0

解题思路

一、利用库函数

#include< math.h >C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 xy。

完整的代码

class Solution {
public:double Power(double base, int exponent) {return pow(base, exponent);}
};

结果
在这里插入图片描述

二、暴力法

直接进行计算,如果exponent为正数直接计算,如果为负数1 / 结果
完整代码如下

class Solution {
public:double Power(double base, int exponent) {// 前置结果设为1.0,即当exponent=0 的时候,就是这个结果double result = 1.0;// 获取指数的绝对值int e = exponent > 0 ? exponent : -exponent;// 根据指数大小,循环累乘for(int i = 1 ; i <= e; i ++){result *= base;}// 根据指数正负,返回结果return exponent > 0 ? result : 1 / result;}
};

结果图
在这里插入图片描述

三、二分法

1、exponent是正数。那么递归式如下:

如果exponent是偶数,Power(base, exponent) = Power(base, exponent / 2) * Power(base, exponent / 2)
如果exponent是奇数,Power(base, exponent) = base * Power(base, exponent / 2) * Power(base, exponent / 2)

2、负指数exponent的情况,取其绝对值先计算。将最后结果取倒数即可。
完整代码


class Solution {
public:double Power(double base, int exponent) {bool x = false;if(exponent < 0){exponent = -exponent;x = true;}double result = GetPower(base, exponent);return x ? 1/result : result;}double GetPower(double base, int exponent){if(exponent == 0){return 1;}if(exponent == 1){return base;}double ans = GetPower(base, exponent >>1);ans *= ans;if(exponent & 1 == 1){ans *= base;}return ans;}
};

运行结果
在这里插入图片描述

这篇关于人生得意须尽欢,莫使金樽空对月。数值的整数次方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639840

相关文章

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

单精度浮点数按存储格式转为整数的程序

///#include<cstdio>//-----------------union int_char{unsigned char ch[4];float i;};void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。{printf("单精度浮点数值为:%f\n",x.i,x.i);printf("存储位置从左到右

项目二----项目的开始是人生的阶梯【哈哈】

最近由于太忙,好久都没有编写博客了,现在又接手了第二个项目,该项目是一个订单系统,主要的功能就是用于展示保单的状态和相关的保单信息以及可以进行继续投保,最重要的是还嵌套这续保功能,这项目在去年年底时已经上线运行了,由于最近续保功能还在优化和重新开发,后续会不断的对博客进行补充。 这是一个属于中间件的项目,在软件架构和设计中主要充当【表现层和逻辑层的部分】,持久层另外项目

开发高质量的java代码;实现完美的人生

一、代码质量差表现在哪些方面: (1)可读性:函数命名随意,实现逻辑混乱,代码格式不规范。 (2)可靠性:程序运行不稳定,bug太多。 (3)维护性:代码逻辑没有层次,混成一团,很难维护改进。 (4)移植性、重用性:许多人写的代码,只能自己使用,很少有能共享的功能性代码。 (5)高效性:很少从算法、资源占用、执行效率等角度去考虑,经常导致软件性能问题。 二、解决方法(个人角度) (1)要

从滴滴到田野:300万存款后的人生选择

在快节奏的都市生活中,每个人都在为了生活奔波,为了梦想奋斗。然而,当一位滴滴员工在工作7年后,攒下了300万,他开始思考一个全新的人生选择:回老家“靠利息”生活,这是否可行?今天,我们就来探讨一下这个有趣的话题。 一、300万:一个重要的数字 对于许多人来说,300万是一个遥不可及的数字。但对于这位滴滴员工来说,这却是他7年辛勤工作的成果。这个数字不仅代表了他过去的努力,更是他未来选择的底气。

交换两个变量数值的3种方法

前言:交换两个数值可不是"a = b,b = a"。这样做的话,a先等于了b的值;当“b = a”后,因为此时a已经等于b的值了,这个语句就相当于执行了b = b。最终的数值关系就成了a == b,b == b。 下面教给大家3种交换变量数值的方法: 目录 1. 中介法 2. 消和法 3. 异或法 4. 总结 1. 中介法 中介法(又称 临时变量法 或 酱油法),其中心

用异或交换两个整数的陷阱

前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量。 如下面: void exchange(int &a, int &b) {     a ^= b;     b ^= a;     a ^= b; } 然而,这里面却存在着一个非常隐蔽的陷阱。 通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &b[j]),

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.