bu_chi_suan @ 2024-03-23 20:40:37
1和7的数据
by xd244 @ 2024-03-23 20:44:36
@bu_chi_suan
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int b[100];
void go(int x){//分离3位数
b[x%10]=1;
b[x/10%10]=1;
b[x/100]=1;
}bool check(int x,int y,int z){//判断是否合法
memset(b,0,sizeof(b));
if(y>999||z>999)return 0;
go(x);go(y);go(z);
for(int c=1;c<=9;c++)if(!b[c])return 0;
return 1;
}int main(){
long long A,B,C,x,y,z,cnt=0;
cin>>A>>B>>C;
if(A==0){//特判
cout<<"No!!!";
return 0;
}for(int x=123;x<=987;x++){
if(x*B%A||x*C%A)continue;
y=x*B/A,z=x*C/A;
if(check(x,y,z))printf("%lld %lld %lld\n",x,y,z),cnt++;
}if(!cnt)printf("No!!!");
}
by bu_chi_suan @ 2024-03-24 13:52:43
#include<cstdio>
#include<algorithm>
using namespace std;
int num[9]={1,2,3,4,5,6,7,8,9};
int main()
{
int a,b,c,k,cnt,num1,num2,num3,arr1[9],arr[9]={0};cnt=0;
scanf("%d%d%d",&a,&b,&c);
if(a==0)
{
printf("No!!!");
return 0;
}
for(int i=123;i<=987 ;i++)
{
num1=i;
num2=(b/a)*i;
num3=(c/a)*i;
if(i%10==5 || num2/10%10==0 || num3/10%10==0 || num3>999 || num2>999)
continue;
if((num2/num1)==(b/a) && (num3/num1)==(c/a))//满足比例关系后,判断是否由不同的数字组成
{
//分离九个数字存入数组arr中
int j=0;
arr[j]=num1/100;j++;
arr[j]=num1/10%10;j++;
arr[j]=num1%10;j++;
arr[j]=num2/100;j++;
arr[j]=num2/10%10;j++;
arr[j]=num2%10;j++;
arr[j]=num3/100;j++;
arr[j]=num3/10%10;j++;
arr[j]=num3%10;
for(int m=0;m<9;m++)//将此时乱序的数组存入arr1中以待后用
arr1[m]=arr[m];
//对乱序的arr正向排序后与num数组一一比较,若完全相同,则满足取到全部的数字
sort(arr,arr+9);
for( k=0;k<9;k++)
{
if(arr[k]!=num[k])
{
break;
}
}
if(k==9)
{
cnt++;//标记是否有解
for(int q=0;q<9;q++)
{
printf("%d",arr1[q]);
if((q+1)%3==0 && q!=8)
{
printf(" ");
}
}
printf("\n");
}
}
}
if(cnt==0)//无解
printf("No!!!");
return 0;
}
by bu_chi_suan @ 2024-03-24 13:53:39
@xd244 大佬,请问我的逻辑有什么问题吗?第七个数据过不了
by xd244 @ 2024-03-24 14:28:38
@bu_chi_suan 是不是
by bu_chi_suan @ 2024-03-24 15:51:38
@xd244 题目不是说保证a<b<c吗