PAT:B1022 D进制的A+B(20 分)
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
代码:
C/C++:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 100;
int main() {
ll a, b, c;
int d, num[maxn], i = 0, x;
scanf("%lld %lld %d", &a, &b, &d);
c = a + b;
do {
x = c % d;
num[i++] = x;
c = c / d;
} while(c != 0);
for(int j = i-1; j >= 0; j--) {
printf("%d", num[j]);
}
return 0;
}
Java:
import java.util.Scanner;
public class Main {
static int maxn = 100;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long A, B, C;
long a[] = new long[maxn];
int D, len = 0;
A = in.nextLong(); B = in.nextLong(); D = in.nextInt();
C = A + B;
do {
a[len++] = C % D;
C = C / D;
} while (C != 0);
for (int i = len - 1; i >= 0; i--) {
System.out.print(a[i]);
}
}
}