在 C++ 中对两个整数进行除法

c++server side programmingprogramming更新于 2024/11/9 9:01:00

假设我们有两个整数,即被除数和除数。我们必须对两个整数进行除法,而不使用乘法、除法和 mod 运算符。将被除数除以除数后,返回商。整数除法应向零截断。两个输入都是整数

因此,如果给定的输入是被除数 = 7、除数 = -3,则输出将为 -2。

为了解决这个问题,我们将遵循以下步骤 −

  • 取两个参数 x 和 y,表示 x 整除 y
  • 如果 x < -Infinity 且 y = 1,则返回无穷大
  • a := |x|,b := |y| 和 ans := 0
  • 当 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)

示例(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

相关文章