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

来源:互联网 发布:cmd mysql启动命令行 编辑:程序博客网 时间:2024/06/01 17:59

思路比较简单,效率似乎并不太理想,先放在这里,以后再改良.

#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;}


原创粉丝点击