有一个样例过不了,帮我看看

P1618 三连击(升级版)

小周猪猪 @ 2017-10-05 14:40:09

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c,x[10],s,k=0;
    cin>>a>>b>>c;
    for (int i=100;i<=400;i++)
    {
      memset(x,0,sizeof(x));s=0;
      if (i*a>999) continue;
      if (i*b>999) continue;
      if (i*c>999) continue;
      x[i*a%1000/100]=1;
      x[i*a%100/10]=1;
      x[i*a%10]=1;
      x[i*b%1000/100]=1;
      x[i*b%100/10]=1;
      x[i*b%10]=1;
      x[i*c%1000/100]=1;
      x[i*c%100/10]=1;
      x[i*c%10]=1;    
      for (int j=1;j<=9;j++)
      if (x[j]==1) s+=1;
      if (s==9) 
      {
      cout<<i*a<<' '<<i*b<<' '<<i*c<<endl;
      k+=1;
      }
    } 
    if (k==0) printf("No!!!");
    return 0;
}

by 小周猪猪 @ 2017-10-05 14:41:31

希望看看我的程序拿错了

谢谢各位大佬


by eydz_mfj @ 2017-10-10 19:45:28

比如给了三个比较大的数,其中有大于10的

a、b、c*100就必定大于999了

我把i从1开始循环,判断条件改成a*i<100&&a*i>999就对了


by xhx0809 @ 2017-11-30 20:09:33

代码:

//#include<iostream>
//using namespace std;
//bool bcf(int s)
//{
//    int tong[10]={0};
//    while(s)
//    {
//        int t=s%10;
//        tong[t]++;
//        s/=10;
//    }
//    for(int i=1;i<=9;i++)
//        if(tong[i]!=1)
//            return 0;
//    return 1;
//}
//int main()
//{
//    int a,b,c;
//    bool ansflag=false;
//    cin>>a>>b>>c;
//    for(int i=123;i<=999;i++)
//        if(i%a==0)
//        {
//            int t1=i,t2=i/a*b,t3=i/a*c;
//            if(t1<=999&&t2<=999&&t3<=999)
//            {
//                int s=t1+t2*1000+t3*1000000;
//                if(bcf(s))
//                {
//                    cout<<t1<<" "<<t2<<" "<<t3<<endl;
//                    ansflag=true;
//                }
//            }
//        }
//    if(!ansflag)
//        cout<<"No!!!";
//    return 0;
//}

|