Linco2012 @ 2024-11-22 16:59:39
#include<iostream>
#include<cmath>
#include<ctime>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<list>
#include<stack>
#include<queue>
#include<cstdio>
using namespace std;
int x[11];
void get(int k)
{
x[k/100]=1;
x[k/10%10]=1;
x[k%10]=1;
}
bool cheak(int a,int b,int c)
{
memset(x,0,sizeof(x));
if(b>999||c>999) return 0;
get(a);
get(b);
get(c);
if(x[1]==1&&x[2]==1&&x[3]==1&&x[4]==1&&x[5]==1&&x[6]==1&&x[7]==1&&x[8]==1&&x[9]==1) return 1;
return 0;
}
int main()
{
long long a,b,c;
bool f=1;
cin>>a>>b>>c;
for(long long x=123;x<=987;x++)
{
if(x%a==0)
{
long long y=(x/a)*b;
long long l=(x/a)*c;
if(cheak(x,y,l))
{
f=0;
cout<<x<<" "<<y<<" "<<l<<endl;
}
}
}
if(f) cout<<"No!!!";
return 0;
}
by laotingrui @ 2024-11-23 19:39:10
@Linco2012 \ 看看我的 求关~~
#include<iostream>
#include<cstring>
using namespace std;
int t[10],a,b,c;
bool p;
//用于标记用过的数
void cfsw(int x){
while(x!=0){
t[x%10]++;
x/=10;
}
}
int main(){
scanf("%d%d%d",&a,&b,&c);
for(int i=1;i<=999;i++){
int x=i*a,y=i*b,z=i*c,num=0;
if(y>999||z>999) break;//不是三位数,退出循环
cfsw(x),cfsw(y),cfsw(z);//标记
bool flag=1;
for(int i=1;i<=9;i++)
if(t[i]!=1){
flag=0;
break;
}//判断每个数是否只用了一次,用flag标记
if(flag){
printf("%d %d %d\n",x,y,z);
p=1;
}//满足条件,输出并标记
memset(t,0,sizeof(t));//清空数组
}
if(!p) printf("No!!!");//没标记过,输出"No!!!"
return 0;
}