PAT乙級——1022
阿新 • • 發佈:2018-12-17
題目: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
題目分析及實現
對於將十進位制轉化為任意進位制,有一個比較簡單的演算法:
將這個數對基數依次取餘
,將餘數倒序輸出
,在倒序輸出餘數之前
正序輸出最後一次的商
。
具體可以參考進位制轉換!
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner in =new Scanner(System.in);
//int型最長2的32次方,int型夠用
int A =in.nextInt();
int B =in.nextInt()+A;//以後便直接對B進行操作了
int D =in.nextInt();
int temp[]=new int[100];
int i=0;
//十進位制到任意進位制,這個數對基數依次取餘,倒序輸出,在之前正序輸出最後一個商
while (B/D!=0){
temp[i]=B%D;
B=B/D;
i++;
}
System.out.print(B);
for(int j=i-1;j>=0;j--)
System.out.print(temp[j]);
}
}