用 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+ 次瀏覽

啟動您的事業

完成課程,獲得認證

開始
廣告
© . All rights reserved.