用 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