muse_umbra @ 2019-06-16 11:38:47
#include<bits/stdc++.h>
using namespace std;
int vis[10],fl;
int main()
{
int a,b,c;
int l,j,k;
scanf("%d%d%d",&a,&b,&c);
for(int i=111;i<1000;i++)
{
memset(vis,0,sizeof(vis));
l=i;
j=i*b/a;
k=i*c/a;
int ddl=0;
int o=l,p=j,q=k;
if(j>999||k>999)continue;
int w=3;
while(w--)
{
int x=l%10,y=j%10,z=k%10;
if(x==0||y==0||z==0){ddl=1;break;}
if(vis[x]||vis[y]||vis[z]){ddl=1;break;}
if(!vis[x])vis[x]=1;
if(!vis[y])vis[y]=1;
if(!vis[z])vis[z]=1;
l/=10,j/=10,k/=10;
}
if(ddl)continue;
else printf("%d %d %d\n",o,p,q),fl++;
}
if(!fl)printf("No!!!");
return 0;
}
为啥啊 为什么只对了两个点 求助
by 275307894a @ 2019-06-16 12:43:48
因为你没有判重。像样例,198 396 594在9的时候,你的代码应该是顺利完结的
by 275307894a @ 2019-06-16 12:45:38
应该要在 if(!vis[x])vis[x]=1;之前加一个if(x==y||y==z||x==z){ddl=1;break;}