给定一个整数N,按照下列条件进行运算:若N为偶数将其除以2,若为奇数将其加1或者减1。
求一个算法按照上述运算方式使得其以最少的步骤变为1.
解题关键:将该整数N以二进制的形式表示出来,实际上就是进行逻辑右移和加减一的操作。要使得以最快速度变为1,就要求尽可能用移位操作而不是加减操作,也就是要使得加减操作所得到的二进制结果中产生尽可能少的1。如00100101减1以后变为00100100(还剩两个1),若进行加1为00100110(剩下三个1)这样就会需要更多的运算使之变为1. 当最后三位为101的时候进行减一操作无疑减少了1的出现,除了00000011进行减一操作外,诸如00000111、00001111、11111111都是加1操作。
按照上述思路得出下列Java代码:
while(true){
if(n==1)//变为1 就退出
{
return;
}else if((n&1)!=1){ //若为偶数
n=n>>>1; //除以2(进行逻辑移位)
System.out.println(n);
}else{
if((n&7)!=7) //判断最后三位是不是111,若是则加1,若不是自减1
{ //(因为末尾三位为101或011都应该进行减1,若是111就加1)
n--;
System.out.println(n);
}else
{
n++;
System.out.println(n);
}
}
}
分享到:
相关推荐
移动笔试真题之技术类--2010年厦门移动招聘数据库系统工程师笔试试题.pdf 移动笔试真题之技术类--2010年杭州移动招聘操作系统工程师笔试试题.pdf 移动笔试真题之技术类--2010年深圳移动招聘操作系统工程师笔试试题....
文档web前端笔试题-面试题-复习题文档web前端笔试题-面试题-复习题
大唐移动笔试题.pdf---- 珍藏版本,找工作的同学可以看看!
"C和C++笔试题----不错的笔试参考资料"这个压缩包文件显然是为了帮助应聘者准备C/C++相关的技术笔试和面试。下面将详细阐述这两个编程语言的关键知识点。 1. **基本语法和数据类型**: - C语言的基础包括变量、...
中国移动最新最全笔试复习资料大全,供大家学习参考。 一、历年移动笔试真题(12-15年) 2010江苏移动招聘笔试完整试卷 2010年中国移动北京分公司校园招聘网申测试题 2011年江苏移动招聘笔试试卷(江苏移动完整) ...
2018年拼多多内推笔试题-java开发-针对2019届,4道编程题
2022中兴硬件笔试题及答案-图文.docx2022中兴硬件笔试题及答案-图文.docx2022中兴硬件笔试题及答案-图文.docx2022中兴硬件笔试题及答案-图文.docx2022中兴硬件笔试题及答案-图文.docx2022中兴硬件笔试题及答案-图文....
南京-中兴笔试题.doc 南京-中税科技-笔试题.doc 南京-同庆科技笔试题.doc 南京-苏慧面试题.doc 南京-乾坤-笔试题--没用.doc 南京-诺思信数据库基础.doc 没有全部列出,想要找工作的朋友不妨看一看,或许有些帮助,...
HCIE-RS 3.0笔试题库重要H12-261-540题知识点 HCIE-RS 3.0笔试题库重要H12-261-540题涵盖了多种IT技术领域,包括网络协议、交换机技术、认证机制等。下面是从题库中提取的重要知识点: 1. 跨设备链路聚合(LDAG)...
四川省计算机二级笔试真题(C语言19-30).rar 四川省计算机二级笔试真题答案(C语言19-30).rar 四川省计算机二级笔试真题软件基础部分(C语言19-30).rar 四川省计算机二级机试真题(C语言18-30).rar 四川省计算机...
阿里巴巴校园招聘笔试面试题淘宝校园招聘笔试试题27个文档资料合集: 2012阿里巴巴校园招聘阿里云C++笔试试题.doc 2013年阿里巴巴校园招聘笔试试题研发工程师.doc 2014年3月阿里巴巴实习招聘笔试题及部分答案.docx ...
【各大软件公司NET工程师笔试压轴题】------不得不看.docx
中国银行最全笔试资料历年笔试真题11-19年考试完整试题及答案解析+五大银行招聘考试练习题库(30多份pdf) 0-中国银行历年笔试真题11-18年 1-中国银行复习精华讲义 2-中国银行2019招聘考试完整试题及答案解析 3-五大...
【标题】"6.0笔试题2011-8-14.zip"是一个压缩文件,其中包含了2011年8月14日北大青鸟计算机教育机构的一场6.0版本的笔试考试题目。这个文件很可能是为了帮助学生复习或者教师准备教学材料而制作的,集中体现了当时该...
最全的Java笔试题库之选择题篇-总共234道 15.下列哪一种叙述是正确的( ) A. abstract修饰符可修饰字段、方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明...
北大青鸟 ACCP 5.0 Y2 笔试题2008-10-26, 以前收集的,给北大青鸟即将结业的教员和学员们做考前复习用。青鸟总部的题库里面的题做完了,毕业考试肯定没问题
标题中提到的“华为认证数通HCIE3.0笔试题库完美整理H12-261”所涉及的知识点主要集中在华为的HCIE(华为认证互联网专家)3.0版本考试的笔试部分。HCIE是华为推出的网络技术专业认证,其中H12-261是对应于数通(数据...
阿里巴巴2014校园招聘笔试题-研发工程师-全国卷.doc
最全的Java笔试题库之问答题篇-总共243道【121~180】
新版云计算HCIE-Cloud笔试题库H13-531