用123456789中的四个数乘以其中一个数等于剩下的四位数,不能重复,也不能空,请说出前四位数和后四位数

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:54:38

1738 * 4 = 6952
1963 * 4 = 7852

#include<iostream.h>

void print(int a_h[]) {
for (int i=0; i<9; i++)
cout<<a_h[i]<<' ';
cout<<endl;
}

void swap(int &a, int &b) {
int t = a;
a = b;
b = t;
}//交换

void reverse(int a[], int i, int j) {
while (i<j) {
swap(a[i++],a[j--]);
}
}//颠倒

T(int a[]) {
int b = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3],
c = a[4],
d = a[5] * 1000 + a[6] * 100 + a[7] * 10 + a[8];
if(b*c==d) return 1;
return 0;
}

void main() {
int a[9] = {1,2,3,4,5,6,7,8,9}, i, j, n = 0;
while (1) {
if (T(a)) {
cout<<++n<<':';
print(a);
}
for (i=7; i>=0; i--)
if (a[i] < a[i+1]) break;
if (i==-1) break;
for (j=8; j>i; j--)
if (a[j] > a[i]) break;
swap(a[i],a[j]);