重点:next_permutation函数的功能是将数组中选定范围的数按照字典序进行全排列。
c++
#include <iostream>
using namespace std;
int main(int argc,const char *argv[]){
int a[] = {0,1,2,3,4,5,6,7,8,9};
do{
if(a[0]==0 || a[4]==0 ||a[8]==0)continue;
int x1=a[0] * 1000 + a[1]*100 + a[2]*10 + a[3];
int x2=a[4] * 1000 + a[5]*100 + a[6]*10 + a[7];
int x3=a[8] * 10 + a[9];
if((x1-x2)*x3==900){
printf("(%d%d%d%d-%d%d%d%d)*%d%d=900",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}while(next_permutation(a,a+10));
return 0;
}
}
结果:(5012-4987)*36=900
(6048-5973)*12=900
2、python
import itertools
if __name__ == '__main__':
a = list(map(int, list('0123456789')))
x = 0
for i in itertools.permutations(a, 10):
t = ''.join(list(map(str, i)))
a = int(t[0:4])
b = int(t[4:8])
c = int(t[8:10])
if (a - b) * c == 900:
print(a, b, c)