在 C++ 中对两个整数进行除法
c++server side programmingprogramming更新于 2024/11/9 9:01:00
假设我们有两个整数,即被除数和除数。我们必须对两个整数进行除法,而不使用乘法、除法和 mod 运算符。将被除数除以除数后,返回商。整数除法应向零截断。两个输入都是整数
因此,如果给定的输入是被除数 = 7、除数 = -3,则输出将为 -2。
为了解决这个问题,我们将遵循以下步骤 −
- 取两个参数 x 和 y,表示 x 整除 y
- 如果 x < -Infinity 且 y = 1,则返回无穷大
- a := |x|,b := |y| 和 ans := 0
- 当 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)
示例(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