首页 > 试题广场 >

两数相除

[编程题]两数相除
  • 热度指数:9383 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
在不使用乘法运算符,除法运算符和取余运算符的情况下对两个数进行相除操作
示例1

输入

-1,1

输出

-1
如果是用的单处的方法,每次只减去除数的话,可能需要进行的循环次数会太多,所以在这里采用的方法是减去除数乘以2的倍数的形式,这样即使被除数很大,也会由于指数的增大,而降低一定程度的循环次数
class Solution:
    def divide(self, dividend, divisor):
        # write code here
        ops=1
        if (dividend>0 and divisor<0)&nbs***bsp;(dividend<0 and divisor>0):
            ops=-1
        dividend,divisor=abs(dividend),abs(divisor)
        count=0
        m=divisor
        while(dividend>=m):
            dividend-=m
            count+=1
            if dividend>=2*m:
                m=m*2
                count*=2
        return count*ops


发表于 2020-08-26 23:33:25 回复(0)