import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> str = new ArrayList<String>();
Select select = new Select();
int i;
String sub;
while(input.hasNext()) {
str.clear();
sub = input.next();
str.add(sub);
i = 1;
if(sub.equals("0")) {
System.out.println("0");
continue;
}
while(true) {
str.add(Select.sort(sub));
String strR = new StringBuffer(Select.sort(sub)).reverse().toString();
sub = String.valueOf(Math.abs(Long.parseLong(str.get(i)) - Long.parseLong(strR)));
if(!str.contains(String.valueOf(sub))) {
str.remove(i);
str.add(String.valueOf(sub));
sub = Select.sort(sub);
i++;
}else {
int j = str.indexOf(String.valueOf(sub));
if(i==j+1) {
System.out.println(str.get(j));
break;
}
else {
for(; j<str.size()-2; j++) {
System.out.print(str.get(j) + " ");
}
System.out.println(str.get(str.size()-2));
break;
}
}
}
}
}
}
class Select{
public static String sort(String str){
char[] s1 = str.toCharArray();
for(int i=0;i<s1.length;i++){
for(int j=0;j<i;j++){
if(s1[i]<s1[j]){
char temp = s1[i];
s1[i] = s1[j];
s1[j] = temp;
}
}
}
String st = new String(s1);
return st;
}
}
要求输出格式不变
学校OJ拜托大佬了
题目描述
卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。
例如:4321-1234=3087
8730-378=8352
8532-2358=6174
7641-1467=6147
如果K位数也照此办理,它们不是变成一个数,而是在几个数字之间形成循环,称作卡布列克圆舞曲。例如对于五位数54321:
54321-12345=41976
97641-14679=82962
98622-22689=75933
97533-33579=63954
96543-34569=61974
97641-14679=82962
我们把82962 75933 63954 61974称作循环节,即卡布列克圆舞曲。
输入数据
文件包含若干行,每行为一个待求“卡布列克圆舞曲”的起始整数(小于maxlongint)
输出数据
每行为对应整数的循环节,数据之间用空格隔开。