热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

蓝桥学院2019算法题1.8

解题思路:2个相同的2进制数做不进位加法,结果为010相同的10进制数做不进位加法,结果为0K个相同的K进制数做不进位加法,

解题思路:

2个相同的2进制数做不进位加法,结果为0

10相同的10进制数做不进位加法,结果为0

K个相同的K进制数做不进位加法,结果为0

任意进制互换方法:

1、手工取余法

2、Integer.toString(i,radix)

1 package bitOperation;
2
3 /**
4 * @author zsh
5 * @company wlgzs
6 * @create 2019-02-15 8:37
7 * @Describe 题7·出现K次与出现1次
8 * 数组中只有一个数出现了1次,其他的数都出现K次,
9 * 请输出出现1次的数。
10 */
11 public class Main7 {
12 public static void main(String[] args) {
13 int[] arr = {1,1,1,2,2,2,3,4,4,4,5,5,5};
14 int len = arr.length;
15 char[][] kRadix = new char[len][];
16 int k = 3;
17
18 int maxlen = 0;
19 //转成K进制字符数组
20 for (int i = 0; i ) {
21 //求每个数字的3进制字符串并翻转,然后转为字符数组
22 kRadix[i] = new StringBuilder(Integer.toString(arr[i],k)).reverse().toString().toCharArray();
23 if (kRadix[i].length > maxlen){
24 maxlen = kRadix[i].length;
25 }
26 }
27
28 int[] resArr = new int[maxlen];
29 for (int i = 0; i ) {
30 //不进位加法
31 for (int j = 0;j){
32 if (j >= kRadix[i].length)
33 resArr[j] += 0;
34 else
35 resArr[j] += (kRadix[i][j] - '0');
36 }
37 }
38
39 int res = 0;
40 //将K进制数还原为10进制数
41 for (int i = 0; i ) {
42 res += (resArr[i] % k) * (int) Math.pow(k,i);
43 }
44 System.out.println(res);
45 }
46 }

 

转:https://www.cnblogs.com/zsh-blogs/p/10381695.html



推荐阅读
author-avatar
Alistar1991_281
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有