import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in= new Scanner(System.in); String str=in.next(); char [] ch=str.toCharArray(); int len=ch.length; if (len== 1 || len== 2 || len== 3 ){ StringBuilder sb= new StringBuilder(); for ( int i= 0 ;i<len;i++) //将输入小于不是四位的整数转换成是四位数 sb.append(ch[i]); for ( int i=len;i< 4 ;i++) sb.append( 0 ); Sub(sb); } else if (len== 4 ){ //将输入的数据进行非递增排序,即递减排序 int num1=NumDecrease(ch); //将输入的数据进行非递减排序,即递增排序 int num2=NumIncrease(ch); //输出两个数相减的结果 Sub(ch,num1,num2); } in.close(); } private static void Sub(StringBuilder sb) { String str=sb.toString(); char [] ch=str.toCharArray(); //将输入的数据进行非递增排序,即递减排序 int num1=NumDecrease(ch); //将输入的数据进行非递减排序,即递增排序 int num2=NumIncrease(ch); //输出两个数相减的结果 int result=num1-num2; if (result== 0 ) System.out.println(num1+ " - " +num2+ " = " + "0000" ); else { while ((result)!= 6174 && result!= 0 ){ String str1=String.valueOf(num2); char [] ch1=str1.toCharArray(); if (ch1.length< 4 ){ StringBuilder sb1=NumberToString(ch1,num2); System.out.println(num1+ " - " +sb1+ " = " +result); } else { System.out.println(num1+ " - " +num2+ " = " +result); } String str2=String.valueOf(result); ch=str2.toCharArray(); num1=NumDecrease(ch); num2=NumIncrease(ch); result=num1-num2; } String str3=String.valueOf(num2); char [] ch2=str3.toCharArray(); if (ch2.length< 4 ){ StringBuilder sb2=NumberToString(ch2,num2); System.out.println(num1+ " - " +sb2+ " = " +result); } } System.out.println(num1+ " - " +num2+ " = " +result); } private static StringBuilder NumberToString( char [] ch, int num) { StringBuilder sb= new StringBuilder(); for ( int i= 0 ;i< 4 -ch.length;i++) sb.append( 0 ); for ( int i= 0 ;i<ch.length;i++) sb.append(ch[i]); return sb; } private static void Sub( char [] ch, int num1, int num2) { //若整数相减还没到6174,则继续将其进行减法操作 int result=num1-num2; if (result== 0 ) System.out.println(num1+ " - " +num2+ " = " + "0000" ); else { while ((result)!= 6174 && result!= 0 ){ String str=String.valueOf(num2); char [] ch1=str.toCharArray(); if (ch1.length< 4 ){ StringBuilder sb1=NumberToString(ch1,num2); System.out.println(num1+ " - " +sb1+ " = " +result); } else { System.out.println(num1+ " - " +num2+ " = " +result); } String str1=String.valueOf(result); ch=str1.toCharArray(); num1=NumDecrease(ch); num2=NumIncrease(ch); result=num1-num2; } System.out.println(num1+ " - " +num2+ " = " +result); } } public static int NumDecrease( char [] ch) { // 非递增排序函数,即递减排序 int len=ch.length; StringBuilder sb= new StringBuilder(); for ( int i= 0 ;i<len- 1 ;i++){ for ( int j=i+ 1 ;j<len;j++){ if (ch[i]<=ch[j]){ char temp=ch[j]; ch[j]=ch[i]; ch[i]=temp; } } } for ( int i= 0 ;i<len;i++) sb.append(ch[i]); String str=sb.toString(); int num=Integer.parseInt(str); return num; } public static int NumIncrease( char [] ch) { // 非递减排序函数,即递增排序 int len=ch.length; StringBuilder sb= new StringBuilder(); for ( int i= 0 ;i<len- 1 ;i++){ for ( int j=i+ 1 ;j<len;j++){ if (ch[i]>=ch[j]){ char temp=ch[j]; ch[j]=ch[i]; ch[i]=temp; } } } for ( int i= 0 ;i<len;i++) sb.append(ch[i]); String str=sb.toString(); int num=Integer.parseInt(str); return num; } } |