#include <bits/stdc++.h>
using namespace std;
bool check(int x ,int y ,int z){
string s= to_string(x) + to_string(y) + to_string(z);
if(s.size()!=9) {
return false;
}
sort(s.begin(),s.end());
return s=="123456789";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0) , cout.tie(0);
vector<tuple<int,int,int>>res;
for(int i=1;i<50;i++){
for(int j=100;j<2000;j++){
int k=i*j;
if(k < 1000 || k > 10000) continue;
if(check(i,j,k)){
res.emplace_back(k,i,j);
}
}
}
sort(res.begin(),res.end());
for(auto x:res){
cout<<get<0>(x)<<" = "<<get<1>(x)<<" x "<<get<2>(x)<<endl;
}
return 0;
}
1写一个check函数,传进三个数,判断是否全排列
2主函数进行遍历,对数字小的乘数和另一个乘数进行遍历,两数相乘为第三数,将三个数字传进check判断是否为答案,是答案传进收纳tuple的vector向量中
3对vector向量进行sort排序
4遍历vector向量,输出答案

京公网安备 11010502036488号