1. 程式人生 > >PAT乙級——1022

PAT乙級——1022

題目: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]); } }