• 【Java】【PAT】Basic Level 1022 D进制的A+B


    题目 1022 D进制的A+B

    作者 CHEN, Yue

    单位 浙江大学

    输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1

    输入格式:

    输入在一行中依次给出 3 个整数 A、B 和 D。

    输出格式:

    输出 A+B 的 D 进制数。

    输入样例:

    1. 123 456 8

    输出样例:

    1103


    思路

        题目给定的两个加数a b很明显都可以用int数据类型的变量来存储,它们的和也可以用int类型变量存储。之后就要把这个和转为指定的进制,Java中提供了一个非常有用的函数Integer.toString(int a,int b),可以将int a转为b进制并返回String,直接调用就可以。这个函数使用方法如下。

    1. int num = 42;
    2. int radix = 2; // 二进制
    3. String binary = Integer.toString(num, radix);
    4. System.out.println(binary); // 输出 101010

        但是这样的话,这道题未免也太简单了些,有点无趣。于是我又自己写了一个函数,来实现进制转换的功能。

        进制转换的方法模拟了纸笔演算的过程,因为题目给定的目标进制一定是<10的进制,也就一定能用0-9十个数字表示(不需要字母)。那么只要用被除数不断地除以目标进制的基数,得到一系列余数,直到被除数变为0,最后把所有的余数倒序输出就可以。输出余数这里可以用字符串的加法来完成。

        代码我都放在下边了。总体来说这题比较简单。


    Java代码

    1.本题代码

    1. /*
    2. 功能:输入两个非负整数,以指定进制输出它们的和
    3. */
    4. import java.io.*;
    5. class Main{
    6. public static void main(String[] args) throws IOException{
    7. //声明变量
    8. int a,b,s,d; //输入的两个加数ab,和为s,输出进制为d进制
    9. String r = ""; //最终结果
    10. String[] arr; //接收输入
    11. //接收输入
    12. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    13. arr = br.readLine().split(" +");
    14. a = Integer.parseInt(arr[0]);
    15. b = Integer.parseInt(arr[1]);
    16. d = Integer.parseInt(arr[2]);
    17. //求和a+b
    18. s = a + b;
    19. //转为d进制
    20. r = Integer.toString(s,d); //将int参数s转为d进制
    21. //输出
    22. System.out.println(r);
    23. }//void main
    24. }//class Main

    2.自己写的实现进制转换的函数

    1. public static String getNumStr(int a,int b){
    2. //功能,将给定的正整数a转为b进制,并返回String结果
    3. if(a==0) //若给定数字为0,则直接返回0
    4. return "0";
    5. String r = "" ; //最终结果 若输入为0,则直接返回0
    6. for(String s="";a>0;a/=b)
    7. r = a % b + r; //获取余数,并将当前获取的余数贴在结果的最高位
    8. return r;
    9. }
    10. /*
    11. 思路:模拟手动计算进制转换的过程,每次用被除数除以进制基数,得出一个余数,直到最后被除数为0,然后把所得的所有余数倒序输出,就是进制转换之后的结果。
    12. */

  • 相关阅读:
    一文详解如何用 MySQL/Redis/ZooKeeper 实现分布式锁
    华为HCIE云计算之FA桌面云业务发放
    Java设计模式之过滤器模式(Filter Pattern)
    面向对象的个人理解(封装/继承/多态实践)
    虹科分享 | MKA:基于先进车载网络安全解决方案的密钥协议
    SpringCloud-Gateway解决跨域问题
    【算法与数据结构】235、LeetCode二叉搜索树的最近公共祖先
    笔试强训2
    【计算机网络】HTTP(上)
    关于Object上的一些方法
  • 原文地址:https://blog.csdn.net/Dr_Cheeze/article/details/133912317