1 条题解

  • 0
    @ 2024-12-24 9:59:26

    C++ :

    //枚举了所有的情况。12种,有一种假的,轻就设为-1,重为1,其余为0,至多12*2中情况。
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char str[9][20];
        int a[12];
        int T;
        scanf("%d",&T);
        while(T--)
        {
            for(int i=0;i<9;i++)scanf("%s",&str[i]);
            int res=-1;
            while(res<12)
            {
                int t;
                if(res==-1){res=0;t=1;}
                else if(a[res]==1)  t=-1;
                else  {res++;t=1;}
                for(int i=0;i<12;i++) a[i]=0;
                a[res]=t;
                int L=0,R=0;
                int len=strlen(str[0]);
                for(int i=0;i<len;i++) L+=a[str[0][i]-'A'];
                len=strlen(str[1]);
                for(int i=0;i<len;i++) R+=a[str[1][i]-'A'];
                if(strcmp(str[2],"even")==0)
                {
                    if(L!=R)continue;
                }    
                if(strcmp(str[2],"up")==0)
                   if(L<=R)continue;
                if(strcmp(str[2],"down")==0)
                   if(L>=R)continue;
                   
                L=0,R=0;
                len=strlen(str[3]);
                for(int i=0;i<len;i++) L+=a[str[3][i]-'A'];
                len=strlen(str[4]);
                for(int i=0;i<len;i++) R+=a[str[4][i]-'A'];
                if(strcmp(str[5],"even")==0)
                {
                    if(L!=R)continue;
                }    
                if(strcmp(str[5],"up")==0)
                   if(L<=R)continue;
                if(strcmp(str[5],"down")==0)
                   if(L>=R)continue;
                   
                L=0,R=0;
                len=strlen(str[6]);
                for(int i=0;i<len;i++) L+=a[str[6][i]-'A'];
                len=strlen(str[7]);
                for(int i=0;i<len;i++) R+=a[str[7][i]-'A'];
                if(strcmp(str[8],"even")==0)
                {
                    if(L!=R)continue;
                }    
                if(strcmp(str[8],"up")==0)
                   if(L<=R)continue;
                if(strcmp(str[8],"down")==0)
                   if(L>=R)continue;
                break;
            }    
            printf("%c is the counterfeit coin and it is ",res+'A');
            if(a[res]==-1) printf("light.\n");
            else printf("heavy.\n");
        }    
        return 0;
    }
    
    • 1

    信息

    ID
    1484
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者