PAT-B 1022. D进制的A+B (20)

传送门

https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344

题目

输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103

分析

就是根据短除法的代码实现,平时都是拿数组做的,这次我用栈来练习一下。

遇到的坑:
如果栈顶是0,即开头数字是0,则不输出,数组实现也同理。

源代码

//C/C++实现
#include <iostream>
#include <stack>

using namespace std;

int main(){
    int a, b, d;
    scanf("%d %d %d", &a, &b, &d);
    stack<int> s;
    int tmp = a + b;
    int rest;
    do{
        s.push(tmp %d);
        tmp /= d;
    }while(tmp != 0);
    while(!s.empty()){
        printf("%d", s.top());
        s.pop();
    }
    printf("%c", '\n');
    return 0;
}
//Java实现
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String s = bufferedReader.readLine();
        String[] arrayS = s.split(" ");
        if(arrayS.length != 3){
            System.exit(0);
        }
        int a = 0,b = 0,d = 0;
        try{
            a = Integer.valueOf(arrayS[0]);
            b = Integer.valueOf(arrayS[1]);
            d = Integer.valueOf(arrayS[2]);
        }catch(Exception e) {
            System.exit(0);
        }
        if(a < 0 || a > 1073741823 || b < 0 || b > 1073741823 || d <= 1 || d > 10){
            System.exit(0);
        }
        f(a+b,d);
    }
    public static void f(int num,int target){
        int tmp = 0;
        if(num / target != 0){
            tmp = num / target;
            f(tmp,target);
            System.out.print(num % target);
        }
        else{
            System.out.print(num % target);
            return;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。...
    OliverLew阅读 4,145评论 0 1
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,803评论 3 44
  • 描述 输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。 输入格...
    tingshuo123阅读 2,361评论 0 0
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 13,779评论 0 11
  • 小A和小B是闺蜜,下班后一起逛逛逛简直像一对连体婴,但是小A喜欢攒钱,小B更享受当下。小A和小B同时看上一款限量版...
    刺猬有毒阅读 3,199评论 0 1