求大佬帮助……80分最后一个点WA……qwq

P1618 三连击(升级版)

Dusker @ 2017-07-10 17:34:58

#include<iostream>
int check[10000],check1;
bool flag=0;
using namespace std;
int main()
{
    int y,y1,y2;
    cin>>y>>y1>>y2;
    int a,b,c,d,e,f,g,h,z,s=0;
    for(int i=123;i<=999/y2;i++)
      { 
        int x[10]={0};
          a=(y*i)%10;
          b=(y*i)/10%10;
          c=(y*i)/100;
          d=(y1*i)%10;
          e=(y1*i)/10%10;
          f=(y1*i)/100;
          g=(y2*i)%10;
          h=(y2*i)/10%10;
          z=(y2*i)/100;
          x[a]=1;
        x[b]=1;
        x[c]=1;
        x[d]=1;
        x[e]=1;
        x[f]=1;
        x[g]=1;
        x[h]=1;
        x[z]=1;
        s=0;
        for(int j=1;j<=9;j++)
          s+=x[j];
        check[check1++]=s;
        if(s==9)
          cout<<y*i<<" "<<y1*i<<" "<<y2*i<<endl;
      }
    for(int i=0;i<=check1;i++)
      if(check[i]==9)
        flag=1;
    if(!flag)
      cout<<"No!!!";
    return 0;
} 
这是代码然后最后一个点WA,最后一个点123 456 789

by 墨明棋妙 @ 2017-07-26 19:33:09

你的代码太复杂

看看我的吧

#include<cstdio>
int main()
{
   int a,b,c;
   int f[10];
   int k1,k2,k3;
   scanf("%d%d%d",&k1,&k2,&k3);
   bool yes=true;
  for(int k=123;k*k3/k1<=987;k++)
  {
       a=k;
       b=a*k2/k1;
       c=a*k3/k1;
       for(int i=1;i<=9;i++)f[i]=0;
       while(a>1||b>1||c>1){
           f[a%10]=f[b%10]=f[c%10]=1;
           a/=10;
           b/=10;
           c/=10;
       }
       bool ok=true;
       for(int i=1;i<=9;i++)if(f[i]==0)ok=false;
       if(ok)printf("%d %d %d\n",k,k*k2/k1,k*k3/k1),yes=false;
  }
  if(yes)printf("No!!!");
return 0;
}

你应该错在范围


|