用 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
广告