假设我们有两个整数除数和除数。我们必须将两个整数相除,而不能使用乘法,除法和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)
让我们看下面的实现以更好地理解-
#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