B1022. D进制的A+B (20)

原创 2018年04月15日 12:21:00

题目描述:

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

输入格式:

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

输出格式:

输出A+B的D进制数。

输入样例:
123 456 8
输出样例:
1103    

思路:

有题值A+B最大为2^31-2,int型可以满足;之后用除基除余法即可对十进制进行转换;

(1)十进制x转换为Q进制y:

采用“除基除余法”,基即为十进制数x,每次讲x除Q,得到的余数低位存储,而商则作为新的x作以上操作,直至商为0;然后从高位输出即可得到y;

代码如下:

#include <cstdio>

int main()
{	
	int a, b, D;
	int d[31];						//边界情况也不会超过31位; 
	scanf ("%d%d%d", &a, &b, &D);
	int sum = a +b, count = 0;
	
	do {							//sum为0,也要先进行一次赋值; 
		d[count++] = sum % D;
		sum = sum / D;
	} while (sum != 0);
	
	for (int i = count - 1; i >= 0; i--) {		//从高位输出; 
		printf ("%d", d[i]);
	}
	
 	return 0;
}

(2)Q进制x转换为十进制y:

若一个十进制数为,它可以转化为

若一个Q进制数为,他可以转化为

对Q进制数运用十进制的加法和乘法即可实现进制间转化;

运用以下代码可以实现:

int y = 0, product = 1;        
while (x != 0) {
	y = y + (x % 10) * product;       //用于获取x的个位的数;
	x = x / 10;                    //去掉x的个位;
	product = product * p;        //用于得到p^n;
} 

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

题目链接:1022. D进制的A+B (20) 思路: 将十进制数转换成n进制数  ,1 import java.util.Scanner; public class M...
  • qq_34594236
  • qq_34594236
  • 2016-05-30 13:34:26
  • 760

1022. D进制的A+B (20)——C语言

输入两个非负10进制整数A和B(30-1),输出A+B的D (1 输入格式: 输入在一行中依次给出3个整数A、B和D。 输出格式: 输出A+B的D进制数。 输入样例: 1...
  • sinat_30002333
  • sinat_30002333
  • 2017-11-09 15:54:32
  • 134

PAT 1022. D进制的A+B

1022. D进制的A+B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B ...
  • youm11
  • youm11
  • 2015-03-06 17:46:49
  • 1141

PAT 乙级 1022. D进制的A+B (20) Java版

输入两个非负10进制整数A和B(30-1),输出A+B的D (1 输入格式: 输入在一行中依次给出3个整数A、B和D。 输出格式: 输出A+B的D进制数。 输入样例: 123 456 8 ...
  • liuchuo
  • liuchuo
  • 2017-02-24 01:33:58
  • 187

PAT (Basic Level) Practise (中文)1022. D进制的A+B (20)

1022. D进制的A+B (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 8000 B ...
  • wyxdexyq
  • wyxdexyq
  • 2014-10-21 20:29:39
  • 2140

PAT乙级—1022. D进制的A+B (20)-native

输入两个非负10进制整数A和B(
  • wanmeiwushang
  • wanmeiwushang
  • 2016-05-05 22:20:10
  • 564

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

进制转换方法总结
  • Daniel960601
  • Daniel960601
  • 2017-02-18 22:23:27
  • 348

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

#include using namespace std; int main() { int a, b, d; cin >> a >> b >> d; int s = a + b; ...
  • Pluto_1992
  • Pluto_1992
  • 2015-03-24 08:06:57
  • 289

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

1022. D进制的A+B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard ...
  • orange2a
  • orange2a
  • 2016-07-14 20:01:12
  • 133

PAT(Basic Level) 1022 D进制的A+B (20)

输入两个非负10进制整数A和B(30-1),输出A+B的D (1 输入格式: 输入在一行中依次给出3个整数A、B和D。 输出格式: 输出A+B的D进制数。 输入样例: 123 456 8 ...
  • gemire
  • gemire
  • 2014-03-07 16:41:39
  • 1649
收藏助手
不良信息举报
您举报文章:B1022. D进制的A+B (20)
举报原因:
原因补充:

(最多只允许输入30个字)