Dusker @ 2017-07-10 17:34:58
#include<iostream>
int check[10000],check1;
bool flag=0;
using namespace std;
int main()
{
int y,y1,y2;
cin>>y>>y1>>y2;
int a,b,c,d,e,f,g,h,z,s=0;
for(int i=123;i<=999/y2;i++)
{
int x[10]={0};
a=(y*i)%10;
b=(y*i)/10%10;
c=(y*i)/100;
d=(y1*i)%10;
e=(y1*i)/10%10;
f=(y1*i)/100;
g=(y2*i)%10;
h=(y2*i)/10%10;
z=(y2*i)/100;
x[a]=1;
x[b]=1;
x[c]=1;
x[d]=1;
x[e]=1;
x[f]=1;
x[g]=1;
x[h]=1;
x[z]=1;
s=0;
for(int j=1;j<=9;j++)
s+=x[j];
check[check1++]=s;
if(s==9)
cout<<y*i<<" "<<y1*i<<" "<<y2*i<<endl;
}
for(int i=0;i<=check1;i++)
if(check[i]==9)
flag=1;
if(!flag)
cout<<"No!!!";
return 0;
}
这是代码然后最后一个点WA,最后一个点123 456 789
by 墨明棋妙 @ 2017-07-26 19:33:09
你的代码太复杂
看看我的吧
#include<cstdio>
int main()
{
int a,b,c;
int f[10];
int k1,k2,k3;
scanf("%d%d%d",&k1,&k2,&k3);
bool yes=true;
for(int k=123;k*k3/k1<=987;k++)
{
a=k;
b=a*k2/k1;
c=a*k3/k1;
for(int i=1;i<=9;i++)f[i]=0;
while(a>1||b>1||c>1){
f[a%10]=f[b%10]=f[c%10]=1;
a/=10;
b/=10;
c/=10;
}
bool ok=true;
for(int i=1;i<=9;i++)if(f[i]==0)ok=false;
if(ok)printf("%d %d %d\n",k,k*k2/k1,k*k3/k1),yes=false;
}
if(yes)printf("No!!!");
return 0;
}
你应该错在范围