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