【PAT甲級 BigInteger】1019 General Palindromic Number (20 分) Java版 7/7通過

題目

這題用Java的BigInteger做,可以操作任意長度的數字,感覺有一點取巧了。

如果C或者C++的話,應該還需要手動處理一下這個20位長度的大數輸入。

思路就是:

  • 輸入一個數,把這個數乘以二,將結果與原來的數字比較
  • 如果發現只是數字順序上的改變,則輸出Yes,否則輸出No
  • 最後把乘以二的結果輸出一下

在這裏插入圖片描述

代碼

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// 讀取數字 乘以二
		Scanner sc = new Scanner(System.in);
		BigInteger big1 = new BigInteger(sc.nextLine());
		BigInteger big2 = big1.add(big1);

		// 分離每一位
		String str1 = String.valueOf(big1);
		String str2 = String.valueOf(big2);
		String[] strArr1 = str1.split("");
		String[] strArr2 = str2.split("");

		// 分離後排序 便於比較
		List<Integer> arr1 = new ArrayList<>();
		for (String s : strArr1) {
			arr1.add(Integer.parseInt(s));
		}
		Collections.sort(arr1);

		List<Integer> arr2 = new ArrayList<>();
		for (String s : strArr2) {
			arr2.add(Integer.parseInt(s));
		}
		Collections.sort(arr2);

		// 比較
		String str = "No";
		if (arr1.equals(arr2)) {
			str = "Yes";
		}
		System.out.println(str);
		System.out.println(big2);
	}
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章