不使用除法來計算兩個正整數的除法操作

昨天表哥考我一道算法題,說是在面試中遇到的:

    如何不使用除法操作符來計算兩個正整數的除法操作

太長時間沒刷題腦回路跟不上,回來想了想其實很簡單,利用二進制的原理,不斷求除數的2的冪次方,從而快速逼近最大商

代碼很簡單,一看就明白了

#include<iostream>
using namespace std;

void divide(int n,int m)
{
	int s=0;
	while(n>=m){
		int i=1;
		while(m*i*2<=n){
			i*=2;
		}
		s+=i;
		n-=i*m;
	}
	cout<<s<<" "<<n<<endl;    //輸出商和餘數
}

int main()
{
	int n,m;
	cin>>n>>m;
	divide(n,m);
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章