两数相除求商,不能用乘法,除法,取模运算
来源:互联网 发布:php更改上传文件大小 编辑:程序博客网 时间:2024/06/05 03:01
问题描述:求商,不能用乘法,除法,取模运算。
算法思路:不能用除法,那只能用减法,但是用减法,超时。可以用位移运算,每次除数左移,相当于2倍。
1 public class DividTwoIntegers { 2 public int divide(int dividend, int divisor) 3 { 4 if(divisor == 0) return Integer.MAX_VALUE; 5 if(divisor == -1 && dividend == Integer.MIN_VALUE) return Integer.MAX_VALUE; 6 7 long pDividend = Math.abs((long)dividend);//取绝对值,放溢出转化为long 8 long pDivisor = Math.abs((long)divisor); 9 10 int result = 0;11 while(pDividend >= pDivisor)12 {13 int count = 0;//记录位移14 while(pDividend >= (pDivisor << count))15 {16 count ++;17 }18 result += (1 << (count-1));19 pDividend -= (pDivisor << (count-1));20 }21 if((dividend <0 && divisor < 0) || (dividend > 0 && divisor > 0))22 {23 return result;24 }25 else26 {27 return -result;28 }29 }30 public static void main(String[] args)31 {32 DividTwoIntegers dt = new DividTwoIntegers();33 int a = dt.divide(10, 3);34 System.out.println(a);35 }36 }
阅读全文
0 0
- 两数相除求商,不能用乘法,除法,取模运算
- 大数运算,队列实现大数 加法、乘法、除法、模除
- 计算两个整数相除,不能用除法和取余
- 不用/,*,mod乘、除、取模运算的除法
- 给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数
- 用位运算来代替乘法、除法以及取模
- JS的乘法,除法,取模,加法,减法运算
- 不用乘法、除法及取模运算,构造两个整数的除法
- 除法运算、商、余数与取模
- 除法的取模运算
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 取模、乘法和除法运算在CPU和GPU上的效率
- 取模、乘法和除法运算在CPU和GPU上的效率
- 乘法逆元(除法取模)
- 一道只能用乘法不能用除法的数组面试题
- 移位运算与除法、取模运算
- 不使用乘法除法模运算实现乘以7除以7
- 带符号大整数加减法,乘法,除法,模除,指数
- 1067. 试密码(20)
- Pro EJB 3.pdf 英文原版 免费下载
- 周志华西瓜书-AI英语单词,第三章
- 一个切图仔的工作日常
- 注释转换(c语言注释转为c++注释)
- 两数相除求商,不能用乘法,除法,取模运算
- Exam Ref 70-762 Developing SQL Databases.pdf 英文原版 免费下载
- <转>深入理解 Java 泛型:类型擦除、通配符、运行时参数类型获取
- CodeBlocks调试带参数的程序
- 1068. 万绿丛中一点红(20)
- 面试技巧
- HDU2022海选女主角
- times函数
- Java The Complete Reference, 8th Edition.pdf 英文原版 免费下载