creeperboom @ 2023-08-25 10:07:04
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstring>
using namespace std;
bool nine[10];
void fen(int a)
{
while(a>0)
{
nine[a%10]=1;
a/=10;
}
if(a==0)
{
nine[0]=1;
}
}
bool nineset(int a,int b,int c)
{
memset(nine,0,sizeof(nine));
fen(a),fen(b),fen(c);
int i;
for(i=1;i<=9;i++)
{
if(nine[i]==0)
{
return false;
}
}
return true;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a,b,c,i;
bool f=false;
cin>>a>>b>>c;
for(i=100;i<999;i++)
{
if(i*c<1000&&a!=0&&b!=0&&c!=0)
{
if(nineset(i*a,i*b,i*c)==true)
{
cout<<i*a<<" "<<i*b<<" "<<i*c<<"\n";
f=true;
}
}
}
if(f==false)
{
cout<<"No!!!";
}
return 0;
}
by luoguandy @ 2023-09-30 13:47:14
因为第5个点的数据输入为:123 456 789
so,一进for循环里就爆了,在for循环外再判断一遍就好了。
给你看看我的:
#include<iostream>
#include<cstring>
using namespace std;
bool vis[10];
void cl(int x)
{
while(x!=0)
{
vis[x%10]++;
x/=10;
}
}
int main()
{
int a,b,c,flag1=0;
cin>>a>>b>>c;
if(a==0)
{
cout<<"No!!!"<<endl;
return 0;
}
for(int i=100*a;i<=1000/a;i++)
{
bool flag=0;
int x=i;
int y=i*b;
int z=i*c;
if(x>1000||y>1000||z>1000)
{
break;
}
cl(x);
cl(y);
cl(z);
for(int j=1;j<10;j++)
{
if(vis[j]==0)
{
flag=1;
break;
}
}
if(flag==0)
{
cout<<x<<" "<<y<<" "<<z<<endl;
flag1=1;
}
memset(vis,0,sizeof(vis));
}
cl(a);
cl(b);
cl(c);
int flag=0;
for(int j=1;j<10;j++)
{
if(vis[j]==0)
{
flag=1;
break;
}
}
if(flag==0)
{
cout<<a<<" "<<b<<" "<<c<<endl;
flag1=1;
}
if(!flag1)
{
cout<<"No!!!"<<endl;
}
return 0;
}