如何不用除法计算A/3

原创 2011年10月18日 16:31:32

 由于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;
}


 

 

 

不用/,*,mod乘、除、取模运算的除法

不用乘、除、取模运算,求两个整数的商。 思路一: 可以用一个循环来做。 思路二: a/b=exp( log(a/b) )=exp( log(a) - log(b) )。 The tricky...
  • jiyanfeng1
  • jiyanfeng1
  • 2012-10-14 11:03:17
  • 4375

不用乘法、除法及取模运算,构造两个整数的除法

Question: Divide two integers without using multiplication, division and mod operator
  • yx2008302080
  • yx2008302080
  • 2014-10-29 16:51:16
  • 438

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...
  • peace_power
  • peace_power
  • 2013-07-01 00:25:57
  • 7483

整数数除以3不用除法

// 正数数除以3不用除法.cpp : Defines the entry point for the console application. // #include "stdafx.h" #in...
  • martin_liang
  • martin_liang
  • 2013-04-09 12:43:12
  • 845

面试题——不用循环计算1+2+...+100之和

前几天看到校招的面试题,要求不要用循环计算出1+2+3...+100之和。当我看到这道题的时候第一反应就是用递归写,能用循环的程序不一定能用递归去写,但是能用递归的程序一定可以用循环写出。所以递归和循...
  • poison_biti
  • poison_biti
  • 2016-09-28 14:51:35
  • 749

不用除法和求模运算,判断一个数能否被3整除

昨天看到一个有意思的题目,不用除法和求模运算,判断一个数能否被3整除。这个问题,网上有人给了一个答案,但是该答案并不正确(读者可以自己去网上搜一下这个题目,可以看到该答案)。本文提出一个思路,与读者分...
  • oyster2008
  • oyster2008
  • 2010-11-01 09:55:00
  • 1879

不用除法运算

两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]a[1]a[2]...*a[N-1]/a[i]; 要求: 1.不准用除法运算2.除了循环计数值...
  • Edwards_June
  • Edwards_June
  • 2017-01-13 17:11:13
  • 329

两个int类型的除法和取模运算

1.两个int类型的除法     两个int类型相除的结果还会是int类型,因此除不尽结果也不会出现小数,而且结果也不是数学上的四舍五入。相对于数学上的结果不管是正负靠近0的那个整数就是两个int类...
  • interperson
  • interperson
  • 2012-02-08 09:11:37
  • 2926

不用乘除及取模操作实现两个整数的相除

问题描述就是简单的两句话:Divide two integers without using multiplication, division and mod operator. If it is ...
  • chenyaxue
  • chenyaxue
  • 2017-09-21 14:34:21
  • 267

不用乘除法,循环,判断求1+2+...+n

#include using namespace std; // compute: 1+2+3+...+n // no use operator '*' and '/' // no use for...
  • sinkary
  • sinkary
  • 2013-10-12 21:06:05
  • 1018
收藏助手
不良信息举报
您举报文章:如何不用除法计算A/3
举报原因:
原因补充:

(最多只允许输入30个字)