因为某些不可言说的原因,现在开始要写十道leetcode上面的题目并且写博客解释,在一天之内!祝福我
-
题目: 两数相除:
给定两个整数,被除数 dividend
和除数 divisor
。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend
除以除数 divisor
得到的商。
示例 1:
输入: dividend = 10, divisor = 3 输出: 3
示例 2:
输入: dividend = 7, divisor = -3 输出: -2
说明:
- 被除数和除数均为 32 位有符号整数。
- 除数不为 0。
- 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。
-
思路:
1. 如果不能直接用除法的话,直接的感受就是用循环语句,然后比较大小;
2. 正负符号的判断就分类讨论;
-
代码:
#include <iostream>
using namespace std;
int Division(int a,int b)
{
int i;
for(i=0;a>=b;i++)
{
a=a-b;
}
cout<<i<<endl;
}
int main()
{
int dividend,divisor;
cout<<"Please input dividend and divisor:"<<endl;
cin>>dividend>>divisor;
if(divisor==0)
cout<<"Wrong !"<<endl;
else
{
if((dividend>0&&divisor>0)||(dividend<0&&divisor<0))
{
cout<<Division(dividend,divisor);
}
else if ((dividend>0&&divisor<0)||(dividend<0&&divisor>0))
{
cout<<"-"<<Division(abs(dividend),abs(divisor));
}
else
cout<<"Wrong !"<<endl;
}
return 0;
}