#include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> using namespace std; int main(){ int T; char ss[100]; scanf("%d\n",&T); vector<char> v,vv; while(T--){ gets(ss); v.clear(); vv.clear(); for(int i = 0; ss[i] != '\0'; i++){ if(ss[i] == ' '){ if(ss[i+1] == 'n' && ss[i+2] == 'o' && ss[i+3] == 't') v.push_back('n'); else if(ss[i+1] == 'a' && ss[i+2] == 'n' && ss[i+3] == 'd') v.push_back('a'); else if(ss[i+1] == 'o' && ss[i+2] == 'r') v.push_back('o'); else if(ss[i+1] == 'T' && ss[i+2] == 'H' && ss[i+3] == 'E' && ss[i+4] == 'N') v.push_back('t'); else v.push_back(ss[i+1]); } } int s; bool f = true; for (s = 0; v[s] != 't'; ++s){ } for (int i = s+1; i < v.size(); ++i){ if(v[i] < 'A' || (v[i] > 'Z' && v[i] < 'a') || v[i] > 'z') continue; if(v[i] == 'a') vv.push_back('o'); else if(v[i] == 'o') vv.push_back('a'); else if(v[i] == 'n') f = false; else{ if(f) vv.push_back('n'); vv.push_back(v[i]); f = true; } } vv.push_back('t'); for (int i = 0 ; i < s; ++i){ if(v[i] == 'a') vv.push_back('o'); else if(v[i] == 'o') vv.push_back('a'); else if(v[i] == 'n') f = false; else{ if(f) vv.push_back('n'); vv.push_back(v[i]); f = true; } } printf("IF "); for (int i = 0; i < vv.size(); ++i){ if(vv[i] == 'a') printf("and "); else if(vv[i] == 'o') printf("or "); else if(vv[i] == 'n') printf("not "); else if(vv[i] == 't') printf("THEN "); else printf("%c ", vv[i]); } printf("\n"); } }
2015年1月29日 星期四
TIOJ 1018 D.A Logical Problem
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言