day6--6174問題(南陽OJ)
阿新 • • 發佈:2018-12-12
6174問題
Problem Description
假設你有一個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a-b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!現在要你寫一個程式來判斷一個四位數經過多少次這樣的操作能出現迴圈,並且求出操作的次數 比如輸入1234執行順序是1234->3087->8352->6174->6174,輸出是4
Input
第一行輸入n,代表有n組測試資料。 接下來n行每行都寫一個各位數字互不相同的四位數
Output
經過多少次上面描述的操作才能出現迴圈
Sample Input
1 1234
Sample Output
4
import java.util.Scanner;
public class Num_6174 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String num="";
int count = 0;
while(n--!= 0){
num = sc.next();
count = 1;
while(Integer.parseInt(num) != 6174){
count++;
int a,b;
char[] code = num.toCharArray();
//氣泡排序
for(int i=0; i<code.length; i++){
for(int j=i+1; j<code.length;j++){
if(code[i] > code[j]){
char temp = code[i];
code[ i] = code[j];
code[j] = temp;
}
}
}
String code_str = new String(code);
a = Integer.parseInt(code_str);
//字元反轉
for(int i=0; i<code.length/2; i++){
char temp = code[i];
code[i] = code[code.length-1-i];
code[code.length-1-i] = temp;
}
code_str = new String(code);
b = Integer.parseInt(code_str);
num = b-a + "";
}
System.out.print(count +"\n");
}
}
}
叨叨
最近放棄了差不多十年劉海的我,感覺自己的顏值真的是直線上升啊,啊哈哈哈哈哈哈哈啊哈,真是不要臉