文章目录
- 两数相除
- 1,程序简介
- 2,程序代码
- 3,运行结果
两数相除
1,程序简介
-
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
-
返回被除数 dividend 除以除数 divisor 得到的商。
-
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
示例 1:
- 输入: dividend = 10, divisor = 3
- 输出: 3
- 解释: 10/3 = truncate(3.33333…) = truncate(3) = 3
示例 2:
- 输入: dividend = 7, divisor = -3
- 输出: -2
- 解释: 7/-3 = truncate(-2.33333…) = -2
提示:
- 被除数和除数均为 32 位有符号整数。
- 除数不为 0。
- 假设我们的环境只能存储32位有符号整数,其数值范围是[−231,231−1]。本题中,如果除法结果溢出,则返回231−1。假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^{31}, 2^{31} − 1]。本题中,如果除法结果溢出,则返回 2^{31} − 1。假设我们的环境只能存储32位有符号整数,其数值范围是[−231,231−1]。本题中,如果除法结果溢出,则返回231−1。
2,程序代码
"""
Created on Fri Jan 7 18:58:35 2022
Function: 两数相除
@author: 小梁aixj
"""
import math
class Solution(object):def divide(self, dividend, divisor):if divisor &#61;&#61; 0:ArithmeticErrorif dividend &#61;&#61; 0:return 0isPositive &#61; (dividend < 0) &#61;&#61; (divisor < 0)m &#61; abs(dividend)n &#61; abs(divisor)res &#61; math.log(m) - math.log(n)res &#61; int(math.exp(res))if isPositive:return min(res, 2147483647)return max(0 - res, -2147483648)
if __name__ &#61;&#61; &#39;__main__&#39;:s &#61; Solution()print(s.divide(10, 3))
3&#xff0c;运行结果