用 C++ 除以两个 integers


假设我们有两个 integer dividend 和 divisor。我们必须在不使用乘法、除法和取模运算符的情况下除以两个 integer。返回除以 dividend 的结果。整数除法应截断为零。这两个输入都是 integer

因此,如果给定的输入为 dividend = 7,divisor = -3,则输出将为 -2。

要解决这个问题,我们将执行以下步骤 -

  • 使用两个参数 x 和 y 表示 x 除以 y
  • 如果 x < -无穷大且 y = 1,则返回无穷大
  • a := |x|,b := |y|,ans := 0
  • while a – b >= 0
    • p := 0
    • while a – (向左移 b(向左移 1 p 次)) >= 0
      • p := p + 1
    • a := a – (左移 b,p 次)
    • ans := ans + (向左移 1 p 次)
  • 如果 x > 0 为真且 y > 0 也为真,则返回 ans,否则返回(- ans)

Example(C++)

让我们看看以下实现,以获得更好的理解 -

 实时演示

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
   int divide(int l, int y) {
      if(l <= INT_MIN && y == -1)return INT_MAX;
      lli a = labs(l);
      lli b = labs(y);
      lli ans = 0;
      while(a-b >= 0){
         int x = 0;
         while(a-(b << 1 << x) >= 0){
            x++;
         }
         a -= b<<x;
         ans += 1<<x;
      }
      return (l>0)== (y>0)?ans:-ans;
   }
};
main(){
   Solution ob;
   cout << ob.divide(40, 3);
}

输入

40
3

输出

13

更新于: 2020 年 4 月 27 日

1000+ 次浏览

启动您的事业

完成课程,获得认证

开始
广告