1.自己写的代码(非常非常非常菜)
#include
#include
#include
#include
using namespace std;
void jiangxu(int a[]) {
for (int i = 0; i < 4; i++) {
int temp = a[i];
int max = i;
for (int j = i+1; j < 4; j++) { if (a[j] > temp) {
temp = a[j];
max = j;
}
}
swap(a[i], a[max]);
}
}
void shengxu(int a[]) {
for (int i = 0; i < 4; i++) {
int temp = a[i];
int max = i;
for (int j = i + 1; j < 4; j++) {
if (a[j] < temp) { temp = a[j]; max = j; } } swap(a[i], a[max]); } } int res(int a[],int b[]) { int rres = (a[0]-b[0]) * 1000 + (a[1] - b[1]) * 100 + (a[2] - b[2]) * 10 + a[3] - b[3]; return rres; } int main() { char n[5]; cin >> n;
if (n[0] == n[1] && n[0] == n[2] && n[0] == n[3]) {
cout << n<<" - "<<n<<" = "<<"0000";
return 0;
}
if (n[1] == '\0') {
n[3] = n[0];
n[0] = '0'; n[1] = '0'; n[2] = '0';
}
if (n[2] == '\0') {
n[3] = n[1];
n[2] = n[0];
n[0] = '0'; n[1] = '0';
}
if (n[3] == '\0'){
n[3] = n[2];
n[2] = n[1];
n[1] = n[0]; n[0] = '0';
}
int jn[5],sn[5];
for (int i = 0; i < 4; i++) {
jn[i] = n[i] - '0';
sn[i] = n[i] - '0';
}
if (n == "6174") {
cout << "7641 - 1467 = 6174";
return 0;
}
int result = 0;
for (; result != 6174;) {
jiangxu(jn);
cout << jn[0]<<jn[1]<<jn[2]<<jn[3];
cout << " - ";
shengxu(sn);
cout << sn[0] << sn[1] << sn[2] << sn[3];
cout << " = ";
result = res(jn, sn);
if (result < 1000) { cout << '0'; }
cout << result<<endl; jn[0] = result / 1000; if (result % 1000 >= 100) { jn[1] = result % 1000 / 100; }
else { jn[1] = 0; }
if (result % 1000%100 >= 10) { jn[2] = result % 1000 % 100 / 10; }
else { jn[2] = 0; }
jn[3] = result % 1000 % 100 % 10;
sn[0] = jn[0]; sn[1] = jn[1]; sn[2] = jn[2]; sn[3] = jn[3];
}
return 0;
}
#include
#include
using namespace std;
bool cmp(int a, int b){
return a > b;
}
void to_array(int a,char b[])//数字转字符串数组
{
for(int i=0;i<4;i++){
b[i] = a % 10 +'0';
a /= 10;
}
}
int main()
{
char num[5];
int n;
scanf("%d", &n);
do{
to_array(n, num);
int max, min;
sort( num, num+4 );
sscanf( num, "%d", &min);//字符串转成了数字
sort( num, num+4, cmp );
sscanf( num, "%d", &max);
printf("%04d - %04d = %04d\n", max, min, max-min);
n = max-min;
}while( n!=6174 && n!=0);
return 0;
}