#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向量,输出答案