PAT1019 數字黑洞(java實現)
題目描述:
給定任一個各位數字不完全相同的 4 位正整數,如果我們先把 4 個數字按非遞增排序,再按非遞減排序,然後用第 1 個數字減第 2 個數字,將得到一個新的數字。一直重複這樣做,我們很快會停在有“數字黑洞”之稱的 6174,這個神奇的數字也叫 Kaprekar 常數。
- 例如,我們從6767開始,將得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
… …
現給定任意 4 位正整數,請編寫程式演示到達黑洞的過程。
-
輸入格式:
輸入給出一個 (0,10^4) 區間內的正整數 N。 -
輸出格式:
如果 N 的 4 位數字全相等,則在一行內輸出 N - N = 0000;否則將計算的每一步在一行內輸出,直到 6174 作為差出現,輸出格式見樣例。注意每個數字按 4 位數格式輸出。
解題思路:這道題要點就是怎麼把輸入的數字排序,這裡java中直接可以呼叫collection的sort方法,之後分別按降序升序兩個for迴圈取出list中的值儲存到s1,s2兩個字串中,然後將字串轉化為整型後相減再所得結果轉化為字元型。最後對於題目給出的一些限制做一些輸出時的判斷即可
易錯點:題目要求每個數字都要以4位格式輸出,所以需要對s的長度進行判斷,如果不是4位在前面加個0
程式:
//題目並沒有AC,得分17分
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
sc.close();
ArrayList<Character> list = new ArrayList<Character>();
boolean flag = true;
while(flag){
//System.out.println(s);
char[] c = s.toCharArray();
list.clear();//初始化list
String s1 = "";
String s2 = "";
for (int i = 0; i < c.length; i++) {
list.add(c[i]);
}
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
s2 += list.get(i);
}
for (int i = list.size()-1; i >= 0 ; i--) {
s1 += list.get(i);
}
int r = Integer.parseInt(s1) - Integer.parseInt(s2);
if (r==0) {
s = "0000";
flag = false;
System.out.println(s1+" - "+s2+" = "+s);
break;
}
s = String.valueOf(r);
if (s.length()<4) {
s = "0"+s;
}
if (s.equals("6174")) {
flag = false;
}
System.out.println(s1+" - "+s2+" = "+s);
}
}
}
相關文章
- 1019 數字黑洞 (20 分)javaJava
- java解決數字黑洞問題Java
- 數字10的黑洞
- 數字5的黑洞
- PAT1044火星數字(java實現)Java
- PAT1048數字加密(java實現)加密Java
- Swift實現黑洞(漩渦)效果Swift
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- PAT甲級真題1069 數字黑洞(巧妙解法)
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- 7-6 黑洞數(20 分)
- 等於K的三數黑洞
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- Java引用計數與實現Java
- linux實現猜數字小遊戲Linux遊戲
- 淺析數字化價值,如何保障數字化價值實現?
- 如何實現炫酷的數字大屏
- 實戰四:手把手教你實現數字識別
- Tensorflow實現RNN(LSTM)手寫數字識別RNN
- PbootCMS實現數字條分頁樣式效果boot
- 數字孿生如何實現?有哪些潛力?
- axure教程:如何實現數字輸入框效果
- 五步實現企業數字化轉型
- 銀彈谷:數字孿生城市如何實現?
- 打造數字化博物館都有哪些實現方式
- Qt 實現文字輸入框,帶字數限制QT
- 每個人都能實現“數字人自由”?HPG
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- [題解] 條件變數實現數字的交替輸出變數
- Java 獲取Word字數Java
- 【Java】——猜數字遊戲Java遊戲
- 首席數字官( CDO)如何加快數字化成熟步伐,推動實現經濟效益
- 從虛擬到現實:數字孿生與數字樣機的進化之路
- j實現數字化!支付寶推出便利店數字經營“山西套裝”
- 數字經濟時代,企業如何更好實現數字化轉型發展
- 用連結串列的方式實現大數相減-Java實現Java
- 深度學習實驗:Softmax實現手寫數字識別深度學習