#include<iostream>
#include<vector>
#include<sstream>
#include<stdio.h>
using namespace std;
int a[4];
int ans[32767][4];
int x = 0;
bool check[4];
void dfs(int k,int a1,int b,int c){
if(k>=3){
int ans1 = 0;
for(int i = 0;i<3;i++){
ans1 = ans1*10+a[i];
}
vector<bool> c1;
for(int i = 0;i<=10;i++){
c1.push_back(false);
}
c1[a[0]] = true;
c1[a[1]] = true;
c1[a[2]] = true;
if(ans1%a1 == 0){
int gb = ans1/a1;
if(gb*b<=999&&gb*c<=999){
int b1 = gb*b;
int c2 = gb*c;
stringstream s1;
stringstream s2;
s1<<b1;
s2<<c2;
string sb1 = s1.str();
string sc2 = s2.str();
bool has= false;
for(int i = 0;i<3;i++){
if(sb1[i] == '0'){
has = true;
break;
}
if(c1[sb1[i] - '0']){
has = true;
break;
}else{
c1[sb1[i] - '0'] = true;
}
}
if(!has){
has = false;
for(int i = 0;i<3;i++){
if(sc2[i] == '0'){
has = true;
break;
}
if(c1[sc2[i] - '0']){
has = true;
break;
}else{
c1[sc2[i] - '0'] = true;
}
}
if(!has){
ans[x][0] = ans1;
ans[x][1] = gb*b;
ans[x][2] = gb*c;
x++;
}
}
}
}
return;
}
for(int i = 1;i<=9;i++){
if(!check[i]){
a[k] = i;
check[i] = true;
dfs(k+1,a1,b,c);
check[i] = false;
}
}
}
int main(){
//freopen("C:\\Users\\Lilebin\\Downloads\\P1618_3.in","r",stdin);
int a1,b,c;
cin>>a1>>b>>c;
if(a1 == 0||b==0||c==0){
cout<<"No!!!";
return 0;
}
dfs(0,a1,b,c);
if(x==0){
cout<<"No!!!";
}else{
for(int i = 0;i<x;i++){
cout<<ans[i][0]<<" "<<ans[i][1]<<" "<<ans[i][2]<<endl;
}
}
}
第一个点RE 但过数据点没有问题,请问问题出在哪?