java中除法乘法,将数字除以3而不使用除法,乘法或模数
“计算减去3次的算法”算法采用theta(| input |)步骤 . 您可能会认为theta(| input |)适用于32位整数,在这种情况下为什么要进行任何编程?只需使用查找表 . 但是,有更快的方法可用于更大的输入 .
您可以对商进行二元搜索,通过将q q q与输入进行比较来测试候选商q是否太大或太小 . 二进制搜索需要theta(log | input |)时间 .
二进制搜索使用除以2,这可以由移位运算符而不是/来完成,或者如果移位运算符太接近除法,您可以在位数组上自己实现 .
通过尝试(n >> 2)(n >> 4),使用1/3是几何级数1/4 1/16 1/64 1/256之和的事实是很诱人的(n> > 6)......然而,对于n = 3,6,7,9,11,12,13,14,15,18,......这产生了错误的答案......对于n = 15,30,它关闭了两个, 31,39,....一般来说,这是由O(log n)关闭的 . 对于n非负,
(n>>2) + (n>>4) + (n>>6) + ... = (n-wt4(n))/3
其中wt4(n)是n的基数4位的和,右侧的/是精确的,而不是整数除法 . 我们可以通过将wt4(n)/ 3加到(n >> 2)(n >> 4)(n >> 6)来计算n / 3.我们可以计算n的基数4,因此wt4(n) )仅使用加法和右移 .
int oneThirdOf(int n){
if (0<=n && n<3)
return 0;
if (n==3)
return 1;
return sum(n) + oneThirdOf(wt4(n));
}
// Compute (n>>2) + (n>>4) + (n>>6) + ... recursively.
int sum(int n){
if (n<4)
return 0;
return (n>>2) + sum(n>>2);
}
// Compute the sum of the digits of n base 4 recursively.
int wt4(int n){
if (n<4)
return n;
int fourth = n>>2;
int lastDigit = n-fourth-fourth-fourth-fourth;
return wt4(fourth) + lastDigit;
}
这也需要theta(日志输入)步骤 .
java中除法乘法,将数字除以3而不使用除法,乘法或模数相关推荐
- java输出两个整数的积_如何检查Java中的两个数字相乘是否会导致溢出?
如何检查Java中的两个数字相乘是否会导致溢出? 我想处理两个数字相乘导致溢出的特殊情况. 代码看起来像这样: int a = 20; long b = 30; // if a or b are bi ...
- java 数字表示什么意思是什么_nan数字是什么意思 java中double值是非数字值是什么意思?...
python 三路快排算法别总拿自己的饱经风霜的脸说事,美的不突出,丑的不别致. class quick_sort(object): def _partition(self, alist, p, r) ...
- JAVA中如何将大数字或字符串放进数组
JAVA中如何将大数字或字符串放进数组 在JAVA学习过程中字符串.数组.数字之间的 的转换经常用到,记录一些非常基础的转换. 1.将数字转换为字符串:String str = String.valu ...
- JAVA中计算百分比 格式化数字
JAVA中计算百分比 格式化数字 这个是我在程序使用的例子: public String myPercent(int y,int z){ String baifenbi="" ...
- JAVA中右移一位和除以2的区别
关于JAVA中>>1和/2的区别(原码反码补码) 首先说明此处的讨论仅限数值上的区别 测试代码如下 package com.qiu.test; import org.junit.Test; ...
- java中如何确定是数字_java中怎么判断指定的数据是字符串是否是数字?
展开全部 java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = 0; i ...
- Java中的低GC:使用原语而不是包装器
总览 有两个很好的理由在可能的地方使用原语而不是包装器. 明晰. 通过使用原语,您可以清楚地知道null值是不合适的. 性能. 使用原语通常更快. 清晰度通常比性能更重要,并且是使用它们的最佳理由. ...
- java tostring格式_如何在Java中使用toString()获得数字的字符串表示形式?
toString()方法中的一个重要方法对象类,它可用于返回一个对象的字符串或文本表示.对象类的toString()方法返回一个字符串,作为指定对象类的名称,后跟" @ "符号和对 ...
- JAVA中的MDC类_CMake - 用/ MT而不是/ MD编译
我是cmake的新手(2.8.12.1),我在Windows上使用它生成项目文件,使用Visual Studio 2012构建cpp-netlib . 默认情况下,它使用/ MDd编译器开关进行编译 ...
最新文章
- java kafka 集群消费_kafka集群搭建和使用Java写kafka生产者消费者
- PL/SQL程序设计 第七章 包的创建和应用
- Docker的“谎言”
- Power-- 1.charge Fuel gauge
- [ZJJOI2013]K大数查询 整体二分
- 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
- SQL Server便利名称
- Python_基于statsmodel包画Bland altman plot (Mean Difference Plot)用于预测结果分析
- 线性回归相关系数c语言,线性回归中相关系数.doc
- Vue脚手架安装教程
- 「计算机网络」五层因特网协议栈的简要介绍和分组名称
- 网易云课堂 python网络爬虫实战
- java基础 day12-FileInputStream类,文件的复制,缓冲流,Propertes文件,xml文件读写,网络socket编程(构建TCP客户端),内部类
- 【PS】ps基础绘画球体
- Vue项目实现点击图标拨打电话
- SIMATIC S7-300 Profibus通讯——(2)EM277与S7-300通讯
- HTML - label标签
- Mac中的番茄钟Just Focus——保持专注就对了
- 一文彻底搞懂go mod使用
- Webix UI JavaScript 10.0.6 Crack
热门文章
- 最强AE模板化视频制作引擎上线 VE 3.0七大体验更新
- 前端测试开发工具--mock 的使用
- 带有汉字的字符串截断出现半个“汉字”的解决方法-C语言源码
- 不得了,日本出版社竟是这样吸引死宅学编程的;谷歌推 TensorFlow Lite,移动开发者福音...
- 报错及解决 ‘gbk‘ codec can‘t decode byte 0x80 和raise ImportError(‘Failed to initialize: {0}‘.format(exc)
- 如何免费获取百度文档,简单实用,2013亲测
- 微信机器人换了服务器掉线,故障2:微信频繁掉线
- 润生集团2021年度业绩内部汇报 | 探索·前行·创造
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
- python爬虫,爬取表格数据