面试题16:数值的整数次方

2023-05-16

【题目:】
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
【输入输出描述】

	// 底数、指数都为正数
    Test("Test1", 2, 3, 8, false);

    // 底数为负数、指数为正数
    Test("Test2", -2, 3, -8, false);

    // 指数为负数
    Test("Test3", 2, -3, 0.125, false);

    // 指数为0
    Test("Test4", 2, 0, 1, false);

    // 底数、指数都为0
    Test("Test5", 0, 0, 1, false);

    // 底数为0、指数为正数
    Test("Test6", 0, 4, 0, false);

    // 底数为0、指数为负数
    Test("Test7", 0, -4, 0, true);

【参考答案】

#include<iostream>
#include<vector>
#include<string>
#include<sstream>
//#include<set>
//#include<unordered_map>
#include <algorithm>

using namespace std;

bool g_InvalidInput = false;
bool equal(double num1, double num2)
{
	if (num1-num2>-0.0000001&&num1-num2<0.0000001)
	{
		return true;
	}
	else
	{
		return false;
	}
}
double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
	if (exponent==0)
	{
		return 1;
	}
	if(exponent == 1)
	{
		return base;
	}

	double result = PowerWithUnsignedExponent(base, exponent >> 1);
	result *= result;
	if ((exponent&1)==1)
	{
		result *= base;
	}

	return result;

}
double Power(double base,int exponent)
{
	g_InvalidInput = false;
	if (equal(base,0.0)&&exponent<0)
	{
		g_InvalidInput = true;
		return 0.0;
	}

	unsigned int absExponent = unsigned int(exponent);
	if (exponent<0)
	{
		absExponent = unsigned int(-exponent);
	}

	double  result = PowerWithUnsignedExponent(base, absExponent);
	if (exponent < 0)
	{
		result = 1.0 / result;
	}

	return result;
}

int main()
{

	double res = Power(2, 4);
	if (g_InvalidInput)
	{
		cout << "InvalidInput" << endl;
	}
	else
	{
		cout << res << endl;
	}
	

	

	return 0;
}

/****


***/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题16:数值的整数次方 的相关文章

  • 机器视觉实验架套装选型

    文章目录 0 机器视觉集成商0 1 上海热驰自动化1 海康威视2 集云誉创3 深圳新次元4 机器视觉光源控制器厂5 恒视科技6 小厂商6 机器视觉检测配套商 0 机器视觉集成商 购买链接 基础款 xff1a 580 970 加强款 xff1
  • meiqua / shape_based_matching(issue记录)

    文章目录 readmeissue 1 如何加快responsemap的创建 issue 2 请问一下是否抗缩放呢 xff1f issue 3 匹配准确定位精度还能再提高吗 xff1f branch有些多了 xff0c 能否写个文档介绍一下各
  • 机器视觉(Robot Vision)——2

    参考书籍 Robot Vision MIT机器视觉课程指定教材 机器视觉探究两个基本问题 xff1a 成像过程的基本原理是什么 xff1f 如何探索对成像过程 求逆 的基本知识和方法 所谓 求逆 xff1a 具体来说 xff0c 就是从一张
  • git同步远程仓库的所有分支

    方法一 span class token comment 找一个干净目录 xff0c 假设是clone span span class token function cd span clone span class token commen
  • linux基础操作之四

    文章目录 14 Linux下软件安装2 简介2 1 先体验一下2 2 apt 包管理工具介绍2 3 apt get2 4 安装软件包2 5 软件升级2 6 卸载软件2 7 软件搜索 3 使用 dpkg3 1 dpkg 介绍3 2 使用 dp
  • FPGA开发板选型

    1 Micro Phase微相官方旗舰店 淘宝链接 1 小熊猫嵌入式电子 淘宝链接 2 正点原子 淘宝链接 3 黑金ALINX 淘宝链接
  • 红黑树原理

    文章目录 参考链接红黑树简介RB Tree的五条基本性质RB Tree的基本操作增情景1 xff1a 红黑树为空树情景2 xff1a 插入结点的Key已存在情景3 xff1a 插入结点的父结点为黑结点情景4 xff1a 插入结点的父结点为红
  • B+tree原理

    文章目录 参考链接B 43 树B树B 43 树与B树的对比B 43 树的插入与分裂 之 删除与合并插入与分裂删除与合并示例 参考链接 B 43 tree详解及实现 C语言 B tree详解及实现 C语言 印度老哥视频讲解 xff1a 彻底理
  • ubuntu 20.04设置开机自启动脚本

    ubuntu16 04 以后的版本不再使用initd管理系统 xff0c 因此不再支持 update rc d 方式添加开机自启脚本 Ubuntu18 版本开始 xff0c 使用了systemd 替代了 initd 管理系统 xff0c 并
  • 核心功能(core 模块)

    英文版原文链接 您将了解这个库的基本构建块 为了理解如何在像素级上操作图像 xff0c 必须阅读 Mat 基本的图像容器 您将了解如何在内存中存储图片 xff0c 以及如何将其内容打印到控制台 如何扫描图像 xff0c 查找表 和 用Ope
  • Mat——基本的图像容器

    英文版原文链接 文章目录 目标Mat存储方法显式创建一个Mat对象格式化输出其他常用项的输出 目标 我们有多种方法从现实世界获取数字图像 数码相机 扫描仪 计算机断层扫描和磁共振成像等等 在以上任何情况下 xff0c 我们 人类 看到的都是
  • TCP/IP 网络协议基础入门

    文章目录 1 TCP IP简介IP 地址域名MAC 地址端口号封装和分用 2 链路层介绍控制帧的传输差错控制反馈重发计时器序号流量控制 以太网PPP xff08 点对点协议 xff09 SLIP 与 PPPSLIP 协议PPP 协议 MTU
  • 一些致力于底层图像处理算法的大神

    只 挚 爱图像处理 SSE图像算法优化系列九 xff1a 灵活运用SIMD指令16倍提升Sobel边缘检测的速度
  • 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    详解网络传输中的三张表 xff0c MAC地址表 ARP缓存表以及路由表MAC地址表 ARP缓存表以及路由表MAC地址表 ARP缓存表 路由表及交换机 路由器基本原理
  • malloc 函数详解

    malloc详细malloc 函数详解malloc 函数详解 原文
  • 内存对齐示例及详解

    示例 什么是内存对齐 xff1f 为什么要内存对齐 xff1f 内存对齐的规则以及作用 详解 为什么要内存对齐 Data alignment Straighten up and fly right关于内存对齐 转 内存对齐

随机推荐

  • MySQL 基础课程

    文章目录 1 SQL 介绍及 MySQL 安装相关概念MySQL安装1 安装之前的检查2 Ubuntu Linux 安装配置 MySQL3 尝试 MySQL 2 创建数据库并插入数据1 新建数据库2 连接数据库3 数据表4 新建数据表5 数
  • Redis 简明教程

    1 Redis 安装介绍 2 Redis 数据类型 3 Redis 系统管理 4 Redis 高级应用
  • 操作系统原理与实践1

    文章目录 1 熟悉实验环境实验环境的工作模式编译内核运行调试 xff08 1 xff09 汇编级调试 xff08 2 xff09 C 语言级调试 文件交换 1 熟悉实验环境 1 Bochs 是一个免费且开放源代码的 IA 32 xff08
  • 第五章 C#基础控件

    常用控件的分类及作用 控件分类作用文本类控件在控件上显示文本 TextBox Label选择类控件为用户提供选择的项目 xff0c RadioButton CheckBox等分组控件可以将窗体中的其他控件分组处理 GroupBox Pane
  • GDB 简明教程

    文章目录 1 GDB 常用命令实战1 GDB 的基本介绍GDB 的进入和退出GDB 命令行界面使用技巧 2 GDB 查看源码3 GDB 断点设置断点查看断点信息删除断点关闭和启用断点 4 关于断点的其他知识断点启用的更多方式断点调试的一些命
  • gpu加速计算机视觉(cuda 模块)

    英文链接 文章目录 利用显卡运行OpenCV算法 xff0c 从你的系统中挤出每一点计算能力 GPU的相似性检查 PNSR和SSIM 如果你已经知道如何处理其他模块 xff0c 这将有助于您快速掌握 xff1a 如何在GPU模块上编码 作为
  • GPU的相似性检查(PNSR和SSIM)

    英文原文链接 文章目录 目的源码怎么做呢 GPU优化结果与结论 目的 在 视频输入和相似性度量 教程中 xff0c 我已经介绍了用于检查两幅图像之间相似性的 PSNR xff08 峰值信噪比 xff09 和SSIM xff08 结构相似度算
  • 借助OpenCV进行视频输入和相似性测量

    英文原文链接 文章目录 目的源码如何读取视频流 在线相机或离线文件 图像相似度 PSNR和SSIM 目的 如今 xff0c 有一个数字视频记录系统任由你操作是常见的 因此 xff0c 您最终会遇到这类情况 xff1a 即不再处理一批图像 x
  • C++实现高性能内存池

    文章目录 1 默认分配器及其性能测试概述内存池简介主函数设计模板链表栈 96 typedef typename Alloc template rebind other allocator 96 总结 2 实现高性能内存池设计内存池实现1 M
  • 计算机组成原理

    文章目录 第一章 计算机的基本组成第二章 计算机的发展及应用第三章 计算机的系统总线第四章 存储器第五章 输入输出系统第六章 数字第七章 CPU指令第八章 CPU结构和功能第九章 控制单元的功能第十章 控制单元的设计 第一章 计算机的基本组
  • 深入理解计算机操作系统之一——计算机系统漫游

    文章目录 第一章 计算机系统漫游1 1 信息就是 bits 43 上下文1 2 程序被其他程序翻译成不同的格式1 3 了解编译系统是如何工作的 xff08 大有裨益 xff09 1 4 处理器读并解释储存在内存中的指令1 4 1 系统的硬件
  • 光学器件基础

    透镜近似与方程 1 s 1 s
  • 镜头技术参数基础

    文章目录 参考文献木桶效应镜头与相机的匹配镜头常用名词视场 xff08 FOV xff09 倍率最大兼容CCD芯片大小 工作距离 xff08 WD xff09 镜头接口焦距焦距 xff1a 光学系统的主点到焦点的距离 焦距越小 xff0c
  • LED与照明光学基础知识

    LED封装类型 插件封装 xff08 小功率 xff09 xff1b 角度受控COB封装 xff08 超大功率 xff09 xff1b 出光面积大贴片封装 xff08 中功率 xff09 xff1b 出光面积大贴片封装 xff08 大功率
  • 【论文阅读】Feature Denoising for Improving Adversarial Robustness

    阅读由来SCRDet 43 43 参考文献 20 https blog csdn net dujuancao11 article details 121590324 Feature Denoising for Improving Adver
  • 文件描述符

    理解文件描述符 谈谈自己对文件描述符的理解
  • 面试题13:机器人的运动范围

    题目描述 题目 xff1a 地上有一个m行n列的方格 一个机器人从坐标 0 0 的格子开始移动 xff0c 它 每一次可以向左 右 上 下移动一格 xff0c 但不能进入行坐标和列坐标的数位之和 大于k的格子 例如 xff0c 当k为18时
  • 21届字节跳动校招提前批2020.07.18晚,笔试记录

    1 山形数组去重 xff0c 并排序 要求时间复杂度O N xff0c 空间复杂度O 1 xff1b 输入输出描述 span class token comment 输入 span span class token number 1 spa
  • 面试题15 二进制中1的个数

    题目 xff1a 请实现一个函数 xff0c 输入一个整数 xff0c 输出该数二进制表示中1的个数 例如 把9表示成二进制是1001 xff0c 有2位是1 因此如果输入9 xff0c 该函数输出2 输入输出描述 span class t
  • 面试题16:数值的整数次方

    题目 xff1a 实现函数double Power double base int exponent xff0c 求base的exponent次方 不得使用库函数 xff0c 同时不需要考虑大数问题 输入输出描述 span class to