您的位置:首页 > 编程语言 > C语言/C++

PAT Basic 1022. D进制的A+B (20)(C语言实现)

2017-05-18 23:45 766 查看

题目

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

输入格式

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

输出格式

输出A+B的D进制数。

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

思路

A、B和A+B的范围在32位整型的范围内,因此用int就好不需要担心。

进制的转换也是很简单的,为了不使用数组,可以从最高位开始输出,这样就要先判断D进制下的位数。

代码

最新代码@github,欢迎交流 ^_^

#include <stdio.h>
int main()
{
int A, B, D, Sum;
scanf("%d %d %d", &A, &B, &D);
Sum = A + B;

/* calculate the bits of Sum */
int power = 1;
/* use Sum / D >= power to avoid using long int */
while(Sum / D >= power) power *= D;

/* calculate D-base number. print them on-the-fly */
for(; power > 0; Sum %= power, power /= D)
printf("%d", Sum / power);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: