// 正数数除以3不用除法.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <math.h>
int divide3(int N)
{
if (N >= -2 && N <= 2)
return 0;
if (N == 3)
return 1;
if (N == -3)
return -1;
int sign = 1;
if (N < 0)
sign = -1;
N = abs(N);
int DIV = N >> 1;
while ((DIV << 2) > N)
{
DIV = DIV >> 1;
}
DIV = DIV + divide3(N-DIV*3);
return DIV*sign;
}
int _tmain(int argc, _TCHAR* argv[])
{
printf("%d \r\n", divide3(9));
printf("%d \r\n", divide3(1000));
printf("%d \r\n", divide3(18));
printf("%d \r\n", divide3(-23));
printf("%d \r\n", divide3(-44));
printf("%d \r\n", divide3(4609));
printf("%d \r\n", divide3(20));
printf("%d \r\n", divide3(-1));
return 0;
}