#include <iostream>
using namespace std;
class DiViBy
{
public:
static int DiVi(int val,int n)
{
int count = 0;
int m = n;
while(m)
{
m/=2;
count++;
}
int result = 0;
while(val > n)
{
result = Add(val>>count,result);
val = Add(val>>count,val&((0x1<<count)-1));
}
if(val==n)
result = Add(result,1);
return result;
}
private:
static int Add(int x,int y)
{
int a;
int b;
do
{
a = x&y;
b = x^y;
x = a<<1;
y = b;
}while(a);
return b;
}
};
int main()
{
cout<<DiViBy::DiVi(15,3)<<endl;//5
cout<<DiViBy::DiVi(105,7)<<endl;//15
cout<<DiViBy::DiVi(105,15)<<endl;//7
cout<<DiViBy::DiVi(93,31)<<endl;//3
cout<<DiViBy::DiVi(126,63)<<endl;//2
}
算法题:求一个数的1/3,1/7,1/15,1/31,/1/63.....
最新推荐文章于 2020-07-26 22:08:54 发布