当前位置: 首页 > article >正文

剑指 Offer :001整数除法

题目描述:

给定两个整数 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))
}


http://www.kler.cn/news/16638.html

相关文章:

  • C++基础demo(C++入门基础案例)
  • QwtPlotCurve使用说明
  • Java文件流技术:从流式编程到文件IO操作完全指南
  • 学计算机的要不要考研?校招工作不喜欢怎么办?怎样才可以年薪百万?
  • 基于R语言的贝叶斯时空数据模型实践技术
  • SpringBoot中有几种定义Bean的方式?
  • 权限提升:Mysql 数据库 .(UDF || 启动项 || 反弹)
  • Midjourney 创建私人画图机器人,共享账号如何设置独立绘画服务器(保姆级教程)
  • 【学习笔记】「JOISC 2022 Day3」洒水器
  • 【数学建模】Day01——层次分析法
  • Java中的StringBuffer 和 StringBuilder 类
  • BM53-缺失的第一个正整数
  • 【6. 激光雷达接入ROS】
  • Java集合框架与ArrayList、LinkedList的区别
  • 操作系统——操作系统逻辑结构
  • Hbase数据库完全分布式搭建以及java中操作Hbase
  • Opencv识别车牌
  • 多级缓存建设方案
  • PHP图片上传代码怎么写和代码的用发
  • vue3表单输入绑定
  • DDD系列:三、Repository模式
  • C++项目中打破循环依赖的锁链:实用方法大全
  • 【Java校招面试】基础知识(二)——Spring Framework AOP
  • java stream 实践篇
  • day1_内存区域
  • 枚举法计算24点游戏
  • C++Primer第五版【阅读笔记】
  • LeetCode 560. 和为 K 的子数组
  • kettle不同数据源的字段不一致的合并后插入数据库
  • 如何使用快速排序算法对整数数组进行就地排序?