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);
}
}
}
相關文章
- java解決數字黑洞問題Java
- 1019 數字黑洞 (20 分)javaJava
- 演算法筆記_217:黑洞數(Java)演算法筆記Java
- Swift實現黑洞(漩渦)效果Swift
- 阿里研究院:穿越數字黑洞(附下載)阿里
- PAT1044火星數字(java實現)Java
- PAT1048數字加密(java實現)加密Java
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- java使用RSA加密方式,實現數字簽名Java加密
- 圓圈中最後剩下的數字(Java實現)Java
- RSA加密解密及數字簽名Java實現加密解密Java
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 在java中程式設計實現數字簽名系統 (轉)Java程式設計
- 用ImageMagick實現數字盲水印
- linux實現猜數字小遊戲Linux遊戲
- Java引用計數與實現Java
- Java實現水仙花數Java
- 淺析數字化價值,如何保障數字化價值實現?
- IT“黑洞”(轉)
- 【Java】——猜數字遊戲Java遊戲
- 如何實現炫酷的數字大屏
- 每個人都能實現“數字人自由”?HPG
- 點選按鈕實現數字增加效果
- js如何實現數字保留小數點後兩位小數JS
- 數字經濟時代,企業如何更好實現數字化轉型發展
- 實戰四:手把手教你實現數字識別
- axure教程:如何實現數字輸入框效果
- 五步實現企業數字化轉型
- 數字孿生如何實現?有哪些潛力?
- Qt 實現文字輸入框,帶字數限制QT
- 打造數字化博物館都有哪些實現方式
- 銀彈谷:數字孿生城市如何實現?
- js實現的數字四捨五入效果JS
- 程式碼實現(機器學習識別手寫數字)機器學習
- Android自定義view實現數字時鐘AndroidView
- Asp.Net圖片數字水印的實現ASP.NET