用 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
广告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP