2013年10月5日 星期六

2013/10/5 TIOJ 1125 組合電路的模擬

// http://218.210.35.237:8080/JudgeOnline/showproblem?problem_id=1125
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int A[32]; int bit[5];int B[8];

void set()
{
    for(int i = 0; i < 32; i++)
    {
        int t = i;
        for(int j = 4; j >= 0; j--)
        {
            bit[j] = t%2;
            t/=2;
        }

        bool c = !(bit[0]+bit[1] == 2);
        bool d = !(bit[1]+bit[2] == 2);
        bool e = !(bit[2]+bit[3] == 2);
        bool f = !(bit[3]+bit[4] == 2);

        bool g = !(c&d);
        bool h = !(d&e);
        bool k = !(e&f);

        t = g*4+h*2+k;
        A[i] = t;
        B[t]++;
      //  cout<<t<<endl;
      //  getchar();
    }
}

int main()
{
    char task[5];
    set();
    while( scanf("%s", task) != EOF )
    {
        if( strlen(task) == 5 )
        {
            int t = (task[0]-'0')*16 +(task[1]-'0')*8 +(task[2]-'0')*4 +(task[3]-'0')*2 +(task[4]-'0')*1 ;
           // cout<<t<<" "<<A[t]<<endl;
            printf("%d%d%d\n", (A[t]>>2)&1, (A[t]>>1)&1, (A[t]>>0)&1);
        }
        else
        {
            int t = (task[0]-'0')*4 +(task[1]-'0')*2 +(task[2]-'0')*1 ;
            printf("%d\n", B[t]);
        }
    }
}

沒有留言:

張貼留言