2015年1月29日 星期四

TIOJ 1018 D.A Logical Problem

#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");
    }   
} 

沒有留言:

張貼留言