80分,最后一个测试点错的,大佬求助

P1618 三连击(升级版)

zhangyuzhe @ 2018-06-10 14:32:38

include<iostream>

include<cstring>

using namespace std; int a[10],x,y,z,t; int gcd(int m,int n) { int r=m%n; while(r!=0) { m=n; n=r; r=m%n; } return n; } int main() { int c; cin>>x>>y>>z; c=gcd(gcd(x,y),z); for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) for(int g=1;g<=9;g++) { int n=(i100+j10+g)(x/c),m=n(y/c),h=n*(z/c),f=0; memset(a,0,sizeof(a)); if(n<=999&&m<=999&&h<=999) { a[n%10]++;a[n/10%10]++;a[n/100]++; a[m%10]++;a[m/10%10]++;a[m/100]++; a[h%10]++;a[h/10%10]++;a[h/100]++; for(int l=1;l<=9;l++) if(a[l]==0||a[l]>=2) {f=1;break;} if(f==0&&a[0]==0) {cout<<n<<" "<<m<<" "<<h<<endl;t=1;} } } if(t==0) cout<<"No!!!"; }


by CBW2007 @ 2018-06-10 16:31:35

@2017BeiJiang

文件分享-微云有最后一个点。你看一下

这是作为蒟蒻的我之前也错过的地方


by zhangyuzhe @ 2018-06-10 18:44:45

可以直接发哪里错了吗? 代码:

include<iostream>

include<cstring>

using namespace std;

int a[10],x,y,z,t;

int gcd(int m,int n)

{ int r=m%n;

while(r!=0)
{
    m=n;
    n=r;
    r=m%n;
}
return n;

}

int main()

{

int c;
cin>>x>>y>>z;
c=gcd(gcd(x,y),z);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
for(int g=1;g<=9;g++)
{
    int n=(i*100+j*10+g)*(x/c),m=n*(y/c),h=n*(z/c),f=0;
    memset(a,0,sizeof(a));
    if(n<=999&&m<=999&&h<=999)
    {
        a[n%10]++;a[n/10%10]++;a[n/100]++;
        a[m%10]++;a[m/10%10]++;a[m/100]++;
        a[h%10]++;a[h/10%10]++;a[h/100]++;
        for(int l=1;l<=9;l++)
        if(a[l]==0||a[l]>=2) {f=1;break;}
        if(f==0&&a[0]==0) {cout<<n<<" "<<m<<" "<<h<<endl;t=1;}
    }
}
if(t==0) cout<<"No!!!";

}


by CBW2007 @ 2018-06-11 21:34:11

不知道欸,你再另找大佬吧,我还太弱了。

ps: 加上注释使人更好的理解你的程序


by 杰西卡卡卡 @ 2018-07-23 16:14:41

我看不出来但是我可以提供第五个点的输入输出你自己打一下看一下是错在哪儿了 输入 123 456 789 输出 123 456 789


by Coding的狗子 @ 2018-07-30 21:35:18

123/123=1;213/123=1


by w_y_y_ @ 2018-08-16 12:05:59

强制转换double类


|