超级小周 @ 2019-03-26 21:48:41
#include<bits/stdc++.h>
using namespace std;
int zkl[10]={0};
int aa,bb,cc;//枚举数
int a,b,c;//不用我说吧
int c1,c2,c3;//记录数
int sum;//各个位数
int num=0;//用来判断是否有解
int main()
{
int u=0;
cin>>a>>b>>c;
for(int i=1;i<=987;i++)
{ memset(zkl,0,sizeof(zkl));
u=1;
aa=i*a;
bb=i*b;
cc=i*c;
c1=aa;c2=bb;c3=cc;
while(aa<1000&&aa!=0){{sum=aa%10;zkl[sum]++;aa=aa/10;
}
while(bb<1000&&bb!=0){sum=bb%10;zkl[sum]++;bb=bb/10;
}
while(cc<1000&&cc!=0){sum=cc%10;zkl[sum]++;cc=cc/10;
}
for(int i=1;i<=9;i++)if(zkl[i]!=1)u=0;
if(u==1){cout<<c1<<" "<<c2<<" "<<c3<<endl;num=1;}
}
if(num==0)cout<<"No!";
return 0;}
by 矢信 @ 2019-03-26 22:00:46
可以用暴力
#include<bits/stdc++.h>
using namespace std;
bool god(int a,int b,int c) {
int x,y,z;
x=a;
y=b;
z=c;
if (x/10==0||x/10%10==0||x/100==0) return false;
if (y/10==0||y/10%10==0||y/100==0) return false;
if (z/10==0||z/10%10==0||z/100==0) return false;
if (x%10==x/100||x%10==x/10%10||x/10%10==x/100) return false;
if (y%10==y/100||y%10==y/10%10||y/10%10==y/100) return false;
if (z%10==z/100||z%10==z/10%10||z/10%10==z/100) return false;
if (x%10==y%10||x%10==y/10%10||x%10==y/100) return false;
if (x/10%10==y%10||x/10%10==y/10%10||x/10%10==y/100) return false;
if (x/100==y%10||x/100==y/10%10||x/100==y/100) return false;
if (z%10==y%10||z%10==y/10%10||z%10==y/100)return false;
if (z/10%10==y%10||z/10%10==y/10%10||z/10%10==y/100)return false;
if (z/100==y%10||z/100==y/10%10||z/100==y/100) return false;
if (x%10==z%10||x%10==z/10%10||x%10==z/100)return false;
if(x/10%10==z%10||x/10%10==z/10%10||x/10%10==z/100)return false;
if (x/100==z%10||x/100==z/10%10||x/100==z/100) return false;
return true;
}
int main() {
int i,j,v;
int x,y,z;
int f=0,b=0;
int A,B,C;
cin>>A>>B>>C;
for (i=1; i<=9; i++) {
for (j=1; j<=9; j++) {
for (v=1; v<=9; v++) {
if (i!=j&&i!=v&&j!=v) {
x=100*i+10*j+v;
if (x%A==0) {
y=x/A*B;
z=x/A*C;
if (x<=999&&y<=999&&z<=999) {
if (god(x,y,z)) {
b=1;
if (f==0) {
f=1;
cout<<x<<" "<<y<<" "<<z;
} else cout<<endl<<x<<" "<<y<<" "<<z;
}
}
}
}
}
}
}
if (b==0) cout<<"No!!!";
return 0;
}
但看一看是怎么做的,
不要只抄
by 矢信 @ 2019-03-26 22:02:08
其实很简单,只需要把不能满足的情况一一列举
by 超级小周 @ 2019-03-27 15:16:10
等下 if(num==0)cout<<"No!";
by 超级小周 @ 2019-03-27 15:16:44
好吧..."No!!!"
by 超级小周 @ 2019-03-30 15:36:58
谢谢dalao AC了
#include<bits/stdc++.h>
using namespace std;
int zkl[10]={0};
int aa,bb,cc;//枚举数
int a,b,c;//不用我说吧
int c1,c2,c3;//记录数
int sum;//各个位数
int num=0;//用来判断是否有解
int main()
{
int u=0;
cin>>a>>b>>c;
for(int i=1;i<=987;i++)
{ memset(zkl,0,sizeof(zkl));
u=1;
aa=i*a;
bb=i*b;
cc=i*c;
c1=aa;c2=bb;c3=cc;
while(aa<1000&&aa!=0){sum=aa%10;zkl[sum]++;aa=aa/10;
}
while(bb<1000&&bb!=0){sum=bb%10;zkl[sum]++;bb=bb/10;
}
while(cc<1000&&cc!=0){sum=cc%10;zkl[sum]++;cc=cc/10;
}
for(int i=1;i<=9;i++)if(zkl[i]!=1)u=0;
if(u==1){cout<<c1<<" "<<c2<<" "<<c3<<endl;num=1;}
}
if(num==0)cout<<"No!!!";
return 0; }
by 超级小周 @ 2019-03-30 15:38:09
@qingsan 谢谢
by 矢信 @ 2019-03-30 21:35:56
没事