您的位置:首页 > 职场人生

微软面试题:编程实现两个正整数的除法,当然不能用除法操作符。

2013-08-06 18:26 295 查看
思路比较简单,效率似乎并不太理想,先放在这里,以后再改良.

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微软 编程 面试题