《算法笔记》P152
用了好几个函数
代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
void F(int a[],int b[]){
sort(a,a+4);
for(int i = 3;i >=0;i--){
b[3-i] = a[i];
}
}
int tonumber(int a[]){
int sum = 0;
for(int i = 0;i <4;i++){
sum = sum + a[i]*pow(10,3-i);
}
return sum;
}
void toarry(int number,int a[]){
for(int i = 0;i <4;i++){
a[i] = number/(pow(10,3-i));
number = number - a[i]* (pow(10,3-i));
}
}
int main(){
char str[10];
int record1[10];
int record2[10];
scanf("%s",str);
for(int i = 0;i <4;i++){
record1[i] = str[i] - '0';
}
//record1是从小到大,record2是从大到小
F(record1,record2);
int s = tonumber(record2) - tonumber(record1);
while(s != 0){
if(s == 6174){
printf("%04d-%04d=%04d",tonumber(record2),tonumber(record1),s);
break;
}
printf("%04d-%04d=%04d\n",tonumber(record2),tonumber(record1),s);
memset(record1,0,sizeof(record1));
toarry(s,record1);
memset(record2,0,sizeof(record2));
F(record1,record2);
s = tonumber(record2) - tonumber(record1);
}
if(s == 0){
printf("%04d-%04d=0000",tonumber(record2),tonumber(record1));
}
return 0;
}