2013年10月22日 星期二

TIOJ 1047 C.邏輯計算機

[無]



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

int main()
{
    char inp[90];
    while(scanf("%s",inp))
    {
        if((inp[0]=='E')&&(inp[1]=='N')&&(inp[2]=='D'))
            break;
        int now=0;     int inv=0;
        int saved=1; int stack=1;
        int sl=strlen(inp);
        for(int lx=0;lx<sl;lx++)
        {
            //printf("d[%c]\n",inp[lx]);
            if(inp[lx]=='!')
                inv=1-inv;
            else if(inp[lx]=='1')
            {
                stack=stack&&(1-inv);
                inv=0;
            }
            else if(inp[lx]=='0')
            {
                stack=stack&&(inv);
                inv=0;
            }
            else if(inp[lx]=='+')
            {
                now=now+saved*stack;
                stack=1;
                saved=1;
                if(now>=1)
                    break;
            }
            else if(inp[lx]=='*')
            {
                //printf("saved=%d\tstack=%d\n",saved,stack);
                saved=saved&&stack;
                stack=1;
            }
        }
        printf("%d\n",now+saved*stack>=1);
    }
    return 0;
}

沒有留言:

張貼留言