【三连击】为何我是80分?求救大神(*╹▽╹*)

P1618 三连击(升级版)

猪君zhujun @ 2019-02-07 22:41:09

第五个点 似乎非常非常......坑!为何我只有80分?求助!

#include <iostream>
using namespace std;
int x,xx,xxx;
int a[10];
bool b,bb;
int i,j;
int A,B,C;
int main()
{
    cin>>A>>B>>C;bb=true;
    for (int q=123; q<=987; q++)
    {
        x=q*A;
        xx=q*B;
        xxx=q*C;
        if (x>=100 && x<=999  && xx>=100 && xx<=999 && xxx>=100 &&  xxx<=999)
        {
            for (i=0; i<=9; i++) a[i]=1;
            a[x/1%10]--;
            a[x/10%10]--;
            a[x/100%10]--;
            a[xx/1%10]--;
            a[xx/10%10]--;
            a[xx/100%10]--;
            a[xxx/1%10]--;
            a[xxx/10%10]--;
            a[xxx/100%10]--;
            b=true;
            for (i=1; i<=9; i++) if (a[i]!=0)b=false;
            if (b) {bb=false;cout<<x<<' '<<xx<<' '<<xxx<<endl;}

        }
    }
    if (bb)cout<<"No!!!";
    return 0;
}

有哪位神犇知道吗?(感觉自己懵(~ ̄(OO) ̄)ブ)


by 猪君zhujun @ 2019-02-07 22:41:55

有哪位神犇知道吗?急!!!


by pigstd @ 2019-02-07 22:44:03

@JASON0716

第5个点是:

123 456 789

for 循环的q要从1开始

我也错过


by 猪君zhujun @ 2019-02-07 22:50:17

已AC!! 谢谢大佬!!!!!(膜拜)

AC代码(其实只要将for循环的q改为小于123的正整数即可)

#include <iostream>
using namespace std;
int x,xx,xxx;
int a[10];
bool b,bb;
int i,j;
int A,B,C;
int main()
{
    cin>>A>>B>>C;bb=true;
    for (int q=1; q<=987; q++)
    {
        x=q*A;
        xx=q*B;
        xxx=q*C;
        if (x>=100 && x<=999  && xx>=100 && xx<=999 && xxx>=100 &&  xxx<=999)
        {
            for (i=0; i<=9; i++) a[i]=1;
            a[x/1%10]--;
            a[x/10%10]--;
            a[x/100%10]--;
            a[xx/1%10]--;
            a[xx/10%10]--;
            a[xx/100%10]--;
            a[xxx/1%10]--;
            a[xxx/10%10]--;
            a[xxx/100%10]--;
            b=true;
            for (i=1; i<=9; i++) if (a[i]!=0)b=false;
            if (b) {bb=false;cout<<x<<' '<<xx<<' '<<xxx<<endl;}

        }
    }
    if (bb)cout<<"No!!!";
    return 0;
}

TAP:好坑呀~~


by Arqiu @ 2019-03-23 00:06:24

@zhu_jun “for循环q改为小于123的正整数”不对吧= =,会出错呀,老哥你再仔细瞅瞅


|