• PAT-进制转换-B1022 D进制的A+B (20分)


    题目描述:

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

    输入格式:

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

    样例:

      输入:123 456 8

      输出:1103

    思路:

      先计算A+B的值,然后再将其转换为D进制。可使用“除基取余法”。

    注意点:

    1. A+B的范围在int范围内
    2. 最好使用do···while语句。使用while语句要特判A+B等于0的情况
    3. 存储A+B%D的数组要从高位到低位进行输出

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int a, b, z;//题目数据正好在int范围内
     7     int datas[40] = { 0 };//存储D进制的每一位数
     8     int d, num = 0;
     9 
    10     scanf("%lld %lld %d", &a, &b, &d);
    11     
    12     z = a + b;
    13 
    14     //进行进制转换
    15     do
    16     {
    17         datas[num++] = z % d;
    18         z /= d;
    19     } while (z != 0);
    20 
    21     //对D进制数进行输出,从高位到低位
    22     for (int i = num - 1;i >= 0;i--)
    23     {
    24         printf("%d", datas[i]);
    25     }
    26 
    27     return 0;
    28 }
    View Code

    参考书籍-《算法笔记》-胡凡

  • 相关阅读:
    Execution Context(EC) in ECMAScript
    Prototype Chain
    一次websocket的抓包体验
    nodejs 解析 base64 文本
    curl常用命令行总结
    nodejs stream基础知识
    typedarrays splice
    nodejs stream & buffer 互相转换
    nodejs buffer 总结
    ajax stream 一边下载二进制数据一边处理
  • 原文地址:https://www.cnblogs.com/fangzhiyou/p/12398307.html
Copyright © 2020-2023  润新知