我看着没毛病,两个没过?

P1618 三连击(升级版)

QLUzongyuxing @ 2022-01-21 09:27:00

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
    if(b == 0)
        return a;
    return gcd(b,a%b);
}
int main()
{
    int a,b,c,i1,i2,i3,f,count=0;
    int i11,i22,i33;
    int s[100000],num[10000];
    cin>>a>>b>>c;
    int t=gcd(a,gcd(b,c));
    a/=t;b/=t;c/=t;
    for(int i=123;i<=987;i++){
      if(i%a==0)
      {
        i1=i;i11=i1; i2=i1/a*b ; i22=i2; i3=i1/a*c;i33=i3;
        for(int j=0;j<=9;j++){
            num[j]=0;
          }
        f=0;
        s[3]=i1%10; i1/=10; s[2]=i1%10; s[1]=i1/10;
        s[6]=i2%10; i2/=10; s[5]=i2%10; s[4]=i2/10;
        s[9]=i3%10; i3/=10; s[8]=i3%10; s[7]=i3/10;
        for(int j=1;j<=9;j++){
             num[s[j]]++;
         }
        for(int j=1;j<=9;j++){
           if(num[s[j]]==1)
           f++;
      }
      if(f==9)
       cout<<i11<<" "<<i22<<" "<<i33<<" "<<endl;
       count++;
      }

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

by coldy_rainy @ 2022-01-21 12:31:29

@QLUzongyuxing

输入2 3 4,你这份代码就卡了。。。


by coldy_rainy @ 2022-01-21 12:34:12

@penhaochen

输入3 4 5,神奇的出现了0?


by coldy_rainy @ 2022-01-21 13:00:38

@QLUzongyuxing

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c,i1,i2,i3,f,count=0;
    int i11,i22,i33;
    int s[100000],num[10000];
    cin>>a>>b>>c;
    for(int i=123;i<=987;i++){

      if(i%a==0)
      {
        i1=i;i11=i1; i2=i1/a*b ; i22=i2; i3=i1/a*c;i33=i3;
        for(int j=1;j<=9;j++){
            num[j]=0;
          }
        f=0;
        s[3]=i1%10; i1/=10; s[2]=i1%10; s[1]=i1/10;
        s[6]=i2%10; i2/=10; s[5]=i2%10; s[4]=i2/10;
        s[9]=i3%10; i3/=10; s[8]=i3%10; s[7]=i3/10;
        for(int j=1;j<=9;j++){
             num[s[j]]++;
         }
        for(int j=1;j<=9;j++){
           if(num[s[j]]==1)
           f++;
      }
      if(f==9)
      {
        cout<<i11<<" "<<i22<<" "<<i33<<" "<<endl;
       count++;
      }

      }

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

AC代码贴上


by coldy_rainy @ 2022-01-21 13:09:15

@QLUzongyuxing

错误点来了

【1】

下面这串代码错误:

for(int j=0;j<=9;j++){
            num[j]=0;
          }

应改为:

for(int j=1;j<=9;j++){
            num[j]=0;
          }

不然神奇的代码就会给你输出0

改后的结果:2AC->4AC(80)

【2】

为什么要找最大公约数?直接用a,b,c它不香吗?

即:去掉gcd及与它有关的代码

改后的结果:4AC->5AC(100)!

AC记录

全绿看起来真爽

验证码:T333祭


by QLUzongyuxing @ 2022-01-21 13:15:50

@penhaochen ac了,十分感谢!!!!


|