请问一下各位大佬的测试数据

P1618 三连击(升级版)

bu_chi_suan @ 2024-03-23 20:40:37

1和7的数据


by xd244 @ 2024-03-23 20:44:36

@bu_chi_suan

1:特判 a=0

7:......

代码:

#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 是不是 a=b=c 的时候?


by bu_chi_suan @ 2024-03-24 15:51:38

@xd244 题目不是说保证a<b<c吗


|