改了还是60…dalao求解答

P1618 三连击(升级版)

wwnf @ 2017-09-29 00:13:39

第一次60,下载大概是第二个数据感觉是单复数的问题。然后加上判断第二个三位数的个位数只要是2的倍数就不算。然后还是60…只是错的测试点变了。很懵。第二个三位数可能不是2的倍数吗…为什么错了上次没错的测试点。分别是两次的代码:

第一次:

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
int a,b,c,book[10],yi,er,san,la,lb,lc,mark[10],flag;
void babc()
{
    yi=book[1]*100 + book[2]*10 + book[3];
    er=book[4]*100 + book[5]*10 + book[6];
    san=book[7]*100 + book[8]*10 + book[9];
    la=yi/a;    lb=er/b;    lc=san/c;
    if ( la==lb && lb==lc )
    {
        flag=1;
         for (int j=1;j<=9;j++)
         {
             printf("%d",book[j]);
             flag++;
             if (flag==4 || flag==7)
             {
                printf(" ");
             }
         }
         printf("\n");
         return;
    }
    else
        return;
}
void dfs(int depth)
{
     if (depth > 9)
     {
        babc();
        return;
     }
     for (int i=1;i<=9;i++)
     {
         if (mark[i]==0)
         {
             book[depth]=i;
             mark[i]=1;
             dfs(depth+1);
             mark[i]=0;
         }
       }
    return;
}
int main()
{
    scanf("%d%d%d",&a,&b,&c);
    dfs(1);
    if (!flag) printf("No!!!");
    return 0;
}

by wwnf @ 2017-09-29 00:14:59

第二次:

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
int a,b,c,book[10],yi,er,san,la,lb,lc,mark[10],flag;
void babc()
{

     if (book[6]%2==1)             return;

    yi=book[1]*100 + book[2]*10 + book[3];

    er=book[4]*100 + book[5]*10 + book[6];

    san=book[7]*100 + book[8]*10 + book[9];

    la=yi/a;    lb=er/b;    lc=san/c;

    if ( la==lb && lb==lc )

    {

        flag=1;

         for (int j=1;j<=9;j++)

         {

             printf("%d",book[j]);

             flag++;

             if (flag==4 || flag==7)              {

                printf(" ");

             }

         }

         printf("\n");

         return;

    }

    else

        return;

} void dfs(int depth)

{      if (depth > 9)

     {

        babc();

        return;

     }

     for (int i=1;i<=9;i++)

     {

         if (mark[i]==0)

         {

             book[depth]=i;

             mark[i]=1;

             dfs(depth+1);

             mark[i]=0;

         }

       }

    return;

} int main()

{     scanf("%d%d%d",&a,&b,&c);

    dfs(1);

    if (!flag) printf("No!!!");

    return 0;

}


by wwnf @ 2017-09-29 12:17:15

我脑抽了…


by lxy12138 @ 2017-09-29 13:01:57

你确实是脑抽了 :-)


by wwnf @ 2017-09-29 13:02:38

@lxy12138 脑抽通过空气传播…你的锅


by lxy12138 @ 2017-10-02 10:21:43

@Webb 坐我旁边你的智商可能是被我吸收了


by wwnf @ 2017-10-02 12:36:52

@lxy12138 我的智商被你吸收这叫中和


by lxy12138 @ 2017-10-02 21:14:15

@Webb 是我力场强谢谢


by 飞翔的金鱼 @ 2017-10-07 11:44:50

你的NO!!!错了


by Ervin @ 2017-10-26 20:14:41

@飞翔的金鱼 dalao这个No!!!是对的。。


by xhx0809 @ 2017-11-30 20:10:19

代码:

//#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;
//}

|