呜呜呜怎么写呀,是我思路有问题嘛?题解区dalao写的我都看不懂欸

P1618 三连击(升级版)

da表哥 @ 2020-03-03 12:24:34

#include<stdio.h>
int main()
{
    int a,b,c,i,j,t;
    int a1,b1,c1,x[10]={0};
    scanf("%d%d%d",&a,&b,&c);
    for(i=123;i<=987 && b1<=987 && c1<=987;i++)
    {
        t=0;
        a1=i;     
        b1=i*b/a;    //乘上各自的比例
        c1=i*c/a;
        x[a1%10]++;
        x[a1/10%10]++;
        x[a1/100]++;
        x[b1%10]++;
        x[b1/10%10]++;
        x[b1/100]++;
        x[c1%10]++;
        x[c1/10%10]++;
        x[c1/100]++;
        for(j=1;j<=9;j++)   //判断是否重复
        {
            if(x[j]!=1)
            {
                t=1;
                break;
            }
        }
        for(j=1;j<=9;j++)
            x[j]=0;
        if(t==1)
            continue;
        else
            printf("%d %d %d\n",a1,b1,c1);
    }
    if(i==987)
        printf("NO!!!");
    return 0;
}

一个点都过不了,我这还有的修改的余地嘛?


by bcku1 @ 2020-03-03 13:06:23

@da表哥 捋清楚思路


by UnyieldingTrilobite @ 2020-03-03 13:13:20

你没判整除啊


by UnyieldingTrilobite @ 2020-03-03 13:13:39

万一a不是a1的倍数呢


by da表哥 @ 2020-03-03 16:50:50

@return20071007 这个我想过,而且也加过判断,然后还是错的,后来想,不是整数倍也有可能是对的,那我就没办法判断了。。


by da表哥 @ 2020-03-03 16:52:09

@bcku1 我就是想着从123循环到987,然后一个一个把对应比例的数列出来看看符不符合,但是如果不是整数倍的数据我这程序没办法判断昂


by UnyieldingTrilobite @ 2020-03-03 17:43:51

@da表哥 先把a,b,c整体最大公约数约成1然后不就可以判了


by da表哥 @ 2020-03-03 18:20:08

@return20071007 那要是123,456,789这种本身就成立,但是不成整数倍咋办昂


by UnyieldingTrilobite @ 2020-03-03 18:21:15

@da表哥

最简整数比会吗


by da表哥 @ 2020-03-04 10:11:48

@return20071007 emmm从最小的数自减循环到一看看有没有能被三个数同时整除的然后除掉?


by WanderingTrader @ 2020-04-02 19:25:22

小数全排列


|