• 蓝桥学院2019算法题1.8


    解题思路:

    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 < len; 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 < len; i++) {
    30             //不进位加法
    31             for (int j = 0;j<maxlen;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 < maxlen; i++) {
    42             res += (resArr[i] % k) * (int) Math.pow(k,i);
    43         }
    44         System.out.println(res);
    45     }
    46 }
  • 相关阅读:
    机器学习:简介
    对API的理解
    软件的运行
    大数据:数据库概念及分类
    Python:easygui的安装、导入、使用、设置
    Python:模块详解及import本质
    Python:urllib模块的urlretrieve方法
    jQuery操作checkbox实例
    ASP.NET MVC 路由调试工具Router Debugger
    认识Visual Studio 条件编译
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10381695.html
Copyright © 2020-2023  润新知