剑指 Offer :001整数除法

2023-11-17

题目描述:

给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求余符号 '%' 。

注意:

  • 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
  • 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1

示例 1:

输入:a = 15, b = 2
输出:7
解释:15/2 = truncate(7.5) = 7

示例 2:

输入:a = 7, b = -3
输出:-2
解释:7/-3 = truncate(-2.33333..) = -2

示例 3:

输入:a = 0, b = 1
输出:0

示例 4:

输入:a = 1, b = 1
输出:1

提示:

  • -231 <= a, b <= 231 - 1
  • b != 0
package main

import (
	"fmt"
)

func divide (a int, b int) int {
    // 看考虑加法代替乘法和除法
	// 定义变量 i 来接收两个整数的商
	// 利用 多次减法来代替除法,每一次减法 i 都 +1
	// 通过比较 a 与 b 的大小来了解,a 是否与 b 除尽
	// 此情况是 a > b 的时候;a 是被除数,b 是除数
	var i int = 0
	// 判断 a b 是否都大于0
	// 正数的商
	if a >= 0 && b > 0 {
		for ; a >= b;  {
			i++
			a -= b
		}
		// return i
		// 存在负数的商计算
	} else if a*b < 0  {
		b = -b
		for ; a >= b;  {
			i++
			a -= b
		}
		i = -i
		// return -i
		// 两者都是负数的商计算
	} else if a < 0 && b < 0{
		a = -a
		b = -b
		for ; a >= b;  {
			i++
			a -= b
		}
	}
	// 输出两个整数的商
	return i    
}

func main() {
	// 定义两个变量 被除数dividend   除数divisor
	var dividend, divisor int
	// 提示:请输出被除数和除数
	fmt.Println("请输入被除数和除数,除数不能为 0,用空格隔开")
	// 获取用户输入的被除数和除数
	fmt.Scanln(&dividend,&divisor)
	// 输出这两个整数的商
	fmt.Println("这两个整数的商是:")
	fmt.Println(dividend,"/",divisor,"=",divide(dividend,divisor))
}

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

剑指 Offer :001整数除法 的相关文章

随机推荐

  • Linux 系统编程之select

    Linux 系统编程之select select 允许单个程序监听多个文件描述符 直到一个或者多个文件描述符准备就绪不阻塞系统 常常用于解决阻塞型的程序 相关代码 According to POSIX 1 2001 include
  • Linux之文件上传和下载(两种方式)

    前言 由于工作需要 整理了一下Linux与Windows之间文件的上传和下载方式 一 rz上传 sz下载文件 rz是将Windows系统上的文件上传到Linux下 sz是将Linux系统下的文件上传到Windows下 1 rz案例 输入rz
  • 【STM32】NRF24L01模块的收发调试

    NRF24L01 发送端 c文件 发送端 h文件 接收端 c文件 接收端 h文件 接收端main函数 总结 这里我是用了两块板子来做通信实验 这里我就直接贴发送端和接收端的 c h文件 一个是用标准库写的一个是hal库写的 只是两块板子引脚
  • python 生成随机字符串(数字+字母+特殊字符)

    方法一 usr bin env python coding utf 8 import random import string 第一种方法 seed 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHI
  • 【数据可视化】基于Streamlit制作的时间序列数据分析APP(上手简单,附可运行源码)

    基于Streamlit制作的时间序列数据分析APP 1 为什么要使用Streamlit 官网介绍链接 在数据科学领域 一方面 当我们在学习或者实践机器学习算法的时候 需要进行一些参数调整 另一方面 我们也希望将最后的成果通过一种友好的可视化
  • Python入门:什么是爬虫,怎么玩爬虫?

    python爬虫入门 什么是爬虫 怎么玩爬虫 看到这两只爬虫没有 两只爬虫 两只爬虫 跑得快 跑得快 一只没有 不好意思 跑题了 别误会 今天不是要教你怎么玩上面这两只沙雕玩意 今天 我们正式从0到1 轻松学会 python 爬虫 接下来
  • STC单片机代码烧录

    说明 两种烧录方式 一 ISP烧录 原料 usb装ttl 单片机 开发板 stc isp 15xx v6 85H exe 群文件有 1 接线vcc vcc gnd gnd RX TX TX RX 2 安装CH340驱动 群文件有 3 将TT
  • 给电脑重装系统后修改远程桌面端口的方法

    怎么修改远程端口 我们都知道系统默认的远程桌面端口是3389 可提供 远程桌面 等连接工具来连接到远程的服务器上面 但是近期有部分Win11用户想要修改这一端口 那么应该如何操作呢 还不清楚应该如何操作的朋友们 可以试试用下面的方法进行操作
  • k8s-3:集群的三种网络

    k8s集群一共有三种网络模型 Node IP Node节点的IP地址 即物理网卡的IP地址 Pod IP Pod的IP地址 即docker容器的IP地址 此为虚拟IP地址 Cluster IP Service的IP地址 此为虚拟IP地址 N
  • 内网搭建yum源

    一 安装httpd服务 yum install y httpd systemctl start httpd systemctl status httpd 二 挂载centos7的ISO文件 2 1 提前准备好ISO文件 下载链接 https
  • chatgpt使用技巧,提示词技巧,效率提问,如何更好的使用chatgpt

    说明 什么是提示词 提示词有什么作用 提示词是我们向语言模型提出问题时使用的基本词语 使用提示词可以让模型更好地理解我们的需求 得出更准确 有用的回答 与直接向模型提问相比 使用提示词需要明确我们的要求 并提供一些背景资料和实例等详细信息
  • NLP实战:基于Pytorch的文本分类入门实战

    目录 一 前期准备 1 环境准备 2 加载数据 二 代码实战 1 构建词典 2 生成数据批次和迭代器 3 定义模型 4 定义实例 5 定义训练函数与评估函数 6 拆分数据集并运行模型 三 使用测试数据集评估模型 四 总结 本文为 365天深
  • 解决MarkDownPad表格显示的问题,以及代码结构显示的问题

    中文版 工具 选项 Markdown Markdown处理器 改为 Markdown 扩展 即可 选择GitHub Flavored Markdown Offling 英文版 Tools Options MarkDown Markdown
  • linux动态链接库的创建

    如下实际操作形式
  • PuTTY和WinSCP

    PuTTY和WinSCP是管理OpenWRT固件的路由器必备工具 WinSCP的优势在于支持多语言 可在图形化界面下管理Linux系统里的文件和存储多个会话设置以方便多设备多用户登录 PuTTY的优势在 于提供与Linux终端一样的命令行控
  • 互联网产品经理面试二三事

    http www masterchat cn article article 250 1 html 摘要 面试是一件辛苦的工作 相信被面试也是一件不容易的事 找到一个适合企业的人才 并不一定是最优秀的 很不容易 尤其在互联网领域 优秀的人才
  • css设置文字垂直居中

    vertical align top 不断调整该值 就可以调整上下位置哦 如 上 vertical align top 中 vertical align middle 下 vertical align bottom 特殊 vertical
  • 数据预处理--缺失值和异常值的处理

    处理缺失数据的方法 1 用平均值 中值 分位数 众数 随机值等替代 如果预计该变量对于学习模型效果影响不大 可以对unknown值赋众数 这里认为变量都对学习模型有较大影响 效果一般 因为等于人为增加了噪声 不建议采取此法 数值型的话 均值
  • 正则表达式生成器

    正则表达式生成器 智能提示和表达式含义解析 高亮显示匹配项内容 高端智能正则表达式生成工具 支持生成语言 Javascript PHP Go rb python Java objc C 等 下载地址 https download csdn
  • 剑指 Offer :001整数除法

    题目描述 给定两个整数 a 和 b 求它们的除法的商 a b 要求不得使用乘号 除号 以及求余符号 注意 整数除法的结果应当截去 truncate 其小数部分 例如 truncate 8 345 8 以及 truncate 2 7335 2