题目要求

P1100题目链接

分析

要求其实还是比较明确的,就是给一个int数据,将其变成二进制表示(32位),前16位整体和后16位整体交换位置,内部不变,再将新的二进制数据重新变成数值输出。

这题特别恶心的就是这个重新生成的二进制数可能超出int范围,我们只能在最后parseLong()而不能parseInt()。

对于Java用户来讲,其实就是关于Integer类和Long类的使用问题。

java.lang.Integer类的这个方法对我们处理这个问题很有帮助:
public static String toBinaryString​(int i)
该方法传入一个int参数,转化成String类型的二进制字符串,但没有高位0。

java.lang.Long类的这个方法对我们处理这个问题很有帮助:
public static long parseLong​(String s, int radix)
该方法传入一个String参数,和一个表示进制的radix参数(这里肯定是要指定为2),将二进制字符串转换成long类型的数值。

其他的处理就需要其他类的辅助,比如String,比如StringBuilder……
具体的详见AC代码。

第一次提交——RE

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String num = Integer.toBinaryString(scanner.nextInt());int length = num.length();StringBuilder builder = new StringBuilder();for (int i = 0; i < 32-length; i++) {builder.append("0");}num = builder.append(num).toString();num = num.substring(16) + num.substring(0, 16);int counter = 0;for (char c : num.toCharArray()) {if (c != '0') {break;}counter++;}num = num.substring(counter);System.out.println(Integer.parseInt(num, 2));scanner.close();}
}

获取了测试数据4:
in
65333513
out
3909682148

测试后发现是没考虑到导致以后超出了int的范围,应该换成long。

第二次提交——AC

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String num = Integer.toBinaryString(scanner.nextInt());int length = num.length();StringBuilder builder = new StringBuilder();for (int i = 0; i < 32-length; i++) {builder.append("0");}num = builder.append(num).toString();num = num.substring(16) + num.substring(0, 16);int counter = 0;for (char c : num.toCharArray()) {if (c != '0') {break;}counter++;}num = num.substring(counter);System.out.println(Long.parseLong(num, 2));scanner.close();}
}

二进制高低位交换の琐事(洛谷P1100题题解,Java语言描述)相关推荐

  1. 浮点高精求和(洛谷P2393题题解,弃坑Java拥抱C++)

    题目要求 P2393题目链接 分析 这题实则是变态的大浮点加法,众所周知的是浮点不精确,按照IEEE754来. 原先使用Java写的,但下面分析一下为什么不能用Java写. 这代码本来是这么写的: i ...

  2. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  3. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  4. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

  5. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  6. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)

    题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...

  7. 贪心策略摘果子(洛谷P1478题题解,Java语言描述)

    题目要求 P1478题目链接 分析 本题的低配版题目链接 → 题解 那个题就是纯水题没啥可写的,我除了贴代码无话可说,但这题吧,虽然不算难,但也可一说. 建议大家移步这里 → 精辟题解 这位爷写了本题 ...

  8. 试试把OJ题意抽象成物理模型(洛谷P1007题题解,Java语言描述)

    题目要求 P1007题目链接 分析 这题干出的,真有毒... 要是有这种指挥官,也是醉了... 言归正传,这题其实是可以贪心求解的,但我们还可以更加666... 事实上,题干上面那一大篇基本在扯,关键 ...

  9. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

最新文章

  1. 11.32 php扩展模块装安
  2. golang简短变量声明
  3. 用Tableau画可调整的树状图(Tree Diagram)
  4. Windows内核函数
  5. 推荐一款接口 API 设计神器!
  6. 企业玩TikTok的三种方式
  7. 大学c语言电脑考试判卷,全国计算机等级考试判卷的玄机
  8. Spring MVC深入讲解
  9. python--下载文件并将文件放到指定文件夹
  10. 商务办公软件应用与实践【9】
  11. 【Linux】腾讯云服务器搭建环境
  12. RGB颜色对照表(数值+英文,Markdown可用)
  13. word无法读取此文件,文档可能已损坏_可能的补救方法
  14. Java中undefined是什么意思,Haskell中的undefined和Java中的null有什么区别?
  15. PikPak离线下载,磁力网盘
  16. 期货开户手续费组成和最低价
  17. c#企业微信在线支付
  18. 柠檬桉叶油和deet_驱蚊液评测 | 这种驱蚊液宝宝慎用,毒性太大!
  19. 山东工商学院计算机科学与技术排名,鲁东大学和山东工商学院计算机专业哪个好...
  20. 全自动加药装置自动加药系统的技术说明

热门文章

  1. Net学习日记_ASP.Net_MVC_新语法笔记
  2. CefSharp 支持MP4
  3. sliverlight3 学习 2, 布局
  4. python3 中方法各种参数和返回值
  5. VS Code编译C/C++
  6. apache启动错误 AH00072: make_sock: could not bind to address [::]:443
  7. python 获取向上两级路径_Python学习第171课--相对路径和绝对路径
  8. apache配置php版本,apache配置支持多版本php
  9. heap python_数据结构-堆(Heap) Python实现
  10. Java 8 中的哈希表