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;
}
}
|