用C ++划分两个整数

假设我们有两个整数除数和除数。我们必须将两个整数相除,而不能使用乘法,除法和mod运算符。除数除以除数后返回商。整数除法应截断为零。两个输入都是整数

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

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

  • 取两个参数x和y表示x除以y

  • 如果x <-Infinity且y = 1,则返回无穷大

  • a:= | x |,b:= | y | 和ans:= 0

  • 而a – b> = 0

    • p:= p + 1

    • p:= 0

    • 而a –(左移b(左移1 p次))> = 0

    • 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