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

题目 1022 D进制的A+B

作者 CHEN, Yue

单位 浙江大学

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

输入格式:

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

输出格式:

输出 A+B 的 D 进制数。

输入样例:

复制代码
123 456 8

输出样例:

复制代码
1103

思路

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

java 复制代码
int num = 42;
int radix = 2; // 二进制
String binary = Integer.toString(num, radix);
System.out.println(binary); // 输出 101010

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

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

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


Java代码

1.本题代码

java 复制代码
/*
功能:输入两个非负整数,以指定进制输出它们的和
*/
import java.io.*;
class Main{
    public static void main(String[] args) throws IOException{
        //声明变量
        int a,b,s,d;        //输入的两个加数ab,和为s,输出进制为d进制 
        String r = "";        //最终结果
        String[] arr;        //接收输入
        //接收输入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        arr = br.readLine().split(" +");
        a = Integer.parseInt(arr[0]);
        b = Integer.parseInt(arr[1]);
        d = Integer.parseInt(arr[2]);
        //求和a+b 
        s = a + b;
        //转为d进制
        r = Integer.toString(s,d);    //将int参数s转为d进制
        //输出
        System.out.println(r);
        
    }//void main 
}//class Main 

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

java 复制代码
    public static String getNumStr(int a,int b){
        //功能,将给定的正整数a转为b进制,并返回String结果 
        if(a==0)                //若给定数字为0,则直接返回0
            return "0";        
        String r = "" ;        //最终结果  若输入为0,则直接返回0
        for(String s="";a>0;a/=b)
            r =  a % b  + r;            //获取余数,并将当前获取的余数贴在结果的最高位
        return r;
    }
/*
思路:模拟手动计算进制转换的过程,每次用被除数除以进制基数,得出一个余数,直到最后被除数为0,然后把所得的所有余数倒序输出,就是进制转换之后的结果。
*/
相关推荐
abcnull2 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡2 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
昵称小白2 小时前
复杂度分析方法
算法
我的xiaodoujiao3 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
juniperhan3 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
科研前沿3 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
ID_180079054733 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路3 小时前
C++23概述
java·c++·c++23
复利人生 复利日知录 赋能循环4 小时前
2026年复利精进:我的每日觉醒与成长密码
学习·思维模型·知识复利·复利·独立