由于A/4<=A/3<=A/2,在此范围内使用二分查找计算。
代码:
int Div3(int A)
{
int val=A<0?-A:A;
if(val==3)
return A<0?-1:1;
int p=val>>2,r=val>>1;
int x=0;
while(p<r)
{
x=(p+r)>>1;
if((3*x)>val)
{
r=x;
}
else if((3*x)<val)
{
if(p==x) break;
p=x;
}
else
{
return A<0?-x:x;
}
}
return A<0?-x:x;
}