Poj 3295

题目大意:略

解:暴力枚举rqst之流的状态就行了,状态数不多,对运算顺序困惑了下,看了看题解是用栈自后往前弄。

View Code
 1 //Tautology
 2 const
 3         ttttt='tautology';
 4         fffff='not';
 5         inf='1.txt';
 6         maxl=111;
 7 var
 8         ask: string;
 9         ans: boolean;
10         stack: array[0..maxl]of longint;
11         tot : longint;
12 
13 procedure main;
14 var
15         l, tmp, p, q, r, s, t: longint;
16         c: char;
17 begin
18   ans := true;
19   for p := 0 to 1 do
20     for q := 0 to 1 do
21       for r := 0 to 1 do
22         for s := 0 to 1 do
23           for t := 0 to 1 do begin
24             l := length(ask);
25             tot := 0;
26             while l>0 do begin
27               c := ask[l];
28               case c of
29                 'q', 'p', 'r', 's', 't': begin
30                   inc(tot);
31                   case c of
32                     'q':stack[tot] := q;
33                     'p':stack[tot] := p;
34                     'r':stack[tot] := r;
35                     's':stack[tot] := s;
36                     't':stack[tot] := t;
37                   end;
38                 end;
39                 'N':stack[tot] := stack[tot] xor 1 ;
40                 'K':begin
41                   dec(tot);
42                   stack[tot] := stack[tot] and stack[tot+1];
43                 end;
44                 'A':begin
45                   dec(tot);
46                   stack[tot] := stack[tot] or stack[tot+1];
47                 end;
48                 'C':begin
49                   dec(tot);
50                   stack[tot] := ((stack[tot]xor stack[tot+1])xor 1)or(stack[tot])
51                 end;
52                 'E':begin
53                   dec(tot);
54                   stack[tot] := (stack[tot]xor stack[tot+1])xor 1;
55                 end;
56               end;
57               dec(l);
58             end;
59             if stack[1]=0 then begin
60               ans := false; exit;
61             end;
62           end;
63 end;
64 
65 procedure print;
66 begin
67   if ans then writeln(ttttt)
68     else writeln(fffff);
69 end;
70 
71 begin
72   assign(input,inf); reset(input);
73   read(ask); readln;
74   while ask<>'0' do begin
75     main;
76     print;
77     read(ask); readln;
78   end;
79 end.
posted @ 2012-05-08 19:04  F.D.His.D  阅读(214)  评论(0编辑  收藏  举报