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 }

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

原文地址:https://www.cnblogs.com/fangzhiyou/p/12398307.html

时间: 2024-08-04 02:01:01

PAT-进制转换-B1022 D进制的A+B (20分)的相关文章

10进制转换成8进制

package cast; import java.util.Collections;import java.util.LinkedList;import java.util.List; public class Cast {    //测试    public static void main(String[] args) {        int a = Cast.castNum(100);        System.out.println(a);            }        

24小时进制转换12小时进制的小程序

class Program { static void Main(string[] args) { //24小时进制转换12小时进制的程序 Console.WriteLine("请输入24小时进制中的任意整点时间"); int time = Convert.ToInt32(Console.ReadLine()); string cha = time > 12 ? (time - 12) + "PM" : time + "AM"; Conso

进制转换(负进制) Luogu 1017

最近匆忙刷题,突然发现自己数学废掉了 ,居然忘了进制转换了QAQ~,后来我身边的王大佬又教了我一遍. 进制转换多数用的是短除法(别人是这么叫的),就是除以进制数后,记录余数,一直除到零为止,然后把记录的余数倒序输出,10及以上的用A.B等字母表示.然而如果遇到负进制(******),就应考虑到余数为负数的情况,例如:-3 mod -2 = -1 ,这时,就应该给这个余数加上进制数的绝对值,同时将整除得到的数加上现在的余数,为了保证计算的正确性,因为我们给余数加了进制数,就相当于做除法时 被除数

进制转换(各进制的原理)

二进制 一个字节等于8个二进制数 0       0    0    0   0  0  0  0 1       1    1    1   1  1  1  1 128  64  32  16  8  4  2   1 1代表有,0代表没有,从右往左看,八个二进制数分别代表了1,2,4,8,16,32,64,128.这8个二进制组合可以代表1~256当中的任何一个数字(所有都是1的话加起来就是256,所有都是0的话加起来就是0.  1~256当中任何一个数字都可以从中表示出来).这256个字

汇编语言程序:16进制转换成10进制(三种方法)

1 ;天水浪客(Gouki Jiang) , 16进制to10进制例题 2007.5.18 2 STACK SEGMENT PARA STACK 3 S_AREA DW 100H DUP(?) 4 S_TOP EQU $-S_AREA 5 STACK ENDS 6 7 DATA SEGMENT PARA 8 VALUE DW 0EB9AH ;060314 9 RESULT DB 5 DUP(?),'$' 10 DATA ENDS 11 12 CODE SEGMENT PARA 13 ASSUME

Java中将10进制转换成16进制

import java.util.Scanner; public class Decimal2HexConversion {     public static void main(String[] args){         Scanner input = new Scanner(System.in);         System.out.print("输入一个十进制数: ");         int decimal = input.nextInt();         Sys

用if语句把24小时制转换成12小时制

public class yunsuanfu { public static void main(String[] arg){ double t=2; int h=38; int m=100; int s=100; if(s>60){ m=(s/60)+m;s=s%60; } if (m>60){ h=(m/60)+h;m=m%60; } if(h>12){ t=t+(0.5*(h/12));h=h%12; } System.out.println(t+"天"+h+&

PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.零多项式应输出0 0. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20

PAT算法题C++实现(Basic)1009 说反话 (20 分)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格. 输出格式:每个测试用例的输出占一行,输出倒序后的句子. 输入样例:Hello World Here I Come输出样例:Come I Here World Hello #include <iostream> #i