不用乘法、除法及取模运算,构造两个整数的除法
2014-10-29 16:51
609 查看
Question:
Divide two integers without using multiplication, division and mod operator。
Code:
Math.floor(double) :java取最近整数运算;
Math.exp(double) :Java取底数e的指数运算;
Math.log(double) : Java取自然对数运算;
MIN = -2147483648;表示整数能取到的最小值;
Max = 2147483647;表示整数能取到的最大值;
在将-2147483648传给long型的整数 时,由于整数最大值为2147483648,故要在2147483648 后面加上“l”(小写的L),表示它是一个long型整数。
如:long divid = 2147483648l;如果不加“l”,会出错。
由于返回值为int 型,故题目中出现测试用例:-2147483648/-1 是没有道理的!因此这个不予考虑!
Divide two integers without using multiplication, division and mod operator。
Code:
import java.lang.Math; public class Solution { public int divide(int dividend, int divisor) { int status = 0; int result = 0; long divis=Math.abs(divisor),divid=Math.abs(dividend); status = (dividend<0 && divisor<0 || dividend>0 && divisor>0) ? 0 : -1; if(divisor == 1) return dividend; if(divisor == -1) return -dividend; if(divisor == 0) return 0; if(divisor == 2) return dividend>>1; if(dividend == -2147483648) divid = 2147483648l; if(divisor == -2147483648) divis = 2147483648l; result = (int) Math.floor(Math.exp( Math.log(((double)divid))-Math.log(((double)divis)) ) ); return (status==0)? result : (0-result); } }
Math.floor(double) :java取最近整数运算;
Math.exp(double) :Java取底数e的指数运算;
Math.log(double) : Java取自然对数运算;
MIN = -2147483648;表示整数能取到的最小值;
Max = 2147483647;表示整数能取到的最大值;
在将-2147483648传给long型的整数 时,由于整数最大值为2147483648,故要在2147483648 后面加上“l”(小写的L),表示它是一个long型整数。
如:long divid = 2147483648l;如果不加“l”,会出错。
由于返回值为int 型,故题目中出现测试用例:-2147483648/-1 是没有道理的!因此这个不予考虑!
相关文章推荐
- 不用乘法,除法和mod运算符来分两个整数。 如果溢出,则返回MAX_INT。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入t
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- Java模拟两个大整数的加法、乘法、除法
- (笔试题)不用除法操作符,实现两个整数的除法
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- c笔试面试 之 不用乘法操作(用逻辑运算)实现两个正整数的除法
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 另解,c/c++有趣的经典笔试题:不用判断语句求得两个整数的最大值
- 不用+、-、×、÷对两个整数求和
- Divide two numbers,两数相除求商,不能用乘法,除法,取模运算
- 不用除法来实现整数的除法运算
- 程序员面试金典: 9.7位操作 7.4只用加号实现整数的乘法、减法和除法运算
- 不用乘除及取模操作实现两个整数的相除