微软面试题:编程实现两个正整数的除法,当然不能用除法操作符。
2013-08-06 18:26
369 查看
思路比较简单,效率似乎并不太理想,先放在这里,以后再改良.
#include<iostream>
using namespace std;
int Div1(int x, int y)//若x >>> y(远大于)时,效率差
{
int ans = 0;
while(x >= y)
{
x -= y;
++ans;
}
return ans;
}
int Div2(int x, int y)//利用二进制的性质,减小加减次数,但是乘法次数增加
{
int ans = 0;
while(x >= y)
{
int mul = 1;
while(y*mul <= x)
mul <<= 1;
mul >>=1;//上一步多左移了一位,需要右移补回
ans += mul;
x -= mul*y;
}
return ans;
}
void main()
{
cout<<Div1(11,3)<<endl;
cout<<Div2(11,3)<<endl;
}
#include<iostream>
using namespace std;
int Div1(int x, int y)//若x >>> y(远大于)时,效率差
{
int ans = 0;
while(x >= y)
{
x -= y;
++ans;
}
return ans;
}
int Div2(int x, int y)//利用二进制的性质,减小加减次数,但是乘法次数增加
{
int ans = 0;
while(x >= y)
{
int mul = 1;
while(y*mul <= x)
mul <<= 1;
mul >>=1;//上一步多左移了一位,需要右移补回
ans += mul;
x -= mul*y;
}
return ans;
}
void main()
{
cout<<Div1(11,3)<<endl;
cout<<Div2(11,3)<<endl;
}
相关文章推荐
- 结构之法 算法之道 面试题 9、编程实现两个正整数的除法 编程实现两个正整数的除法,当然不能用除法操作符。
- 微软面试题:编程实现两个正整数的除法,不能用除法操作符
- 编程实现两个正整数的除法,当然不能用除法操作符
- 编程实现两个正整数的除法,当然不能用除法操作符
- 编程实现两个正整数的除法,当然不能用除法操作符
- java-编程实现两个正整数的除法,当然不能用除法操作符
- 编程实现两个正整数的除法,当然不能用除法操作符
- 编程实现两个正整数的除法,当然不能用除法操作符。
- 编程实现两个正整数的除法,当然不能用除法操作符。
- 微软面试题:编程实现两个正整数的除法
- 微软面试题:编程实现两个正整数的除法
- 每日一道算法题:编程实现两个数的除法,当然不能用除法操作符
- 编程实现两个正整数的除法
- 编程实现两个正整数的除法
- 编程实现两个正整数的除法
- 编程实现两个正整数的除法
- 编程实现两个正整数的除法
- 编程实现两个正整数的除法
- 9、编程实现两个正整数的除法
- 编程实现两个正整数的除法