0139 - Snakes
#include <iostream> #include <string> using namespace std; int Check_A(string snake) { int first=0, second=0, i, j; for (i=2; i<snake.length(); ++i) { if (snake[i] != '=') break; ++first; } for (j=i+1; j<snake.length(); ++j) { if (snake[j] != '=') break; ++second; } if (first!=0 && first==second && snake[i]=='#' && snake[j]=='~' && snake[j+1]=='\0') return 1; return 0; } int Check_B(string snake) { int k; for (k=2; k<snake.length(); k+=2) if (snake[k]!='Q' || snake[k+1]!='=') break; if (k>2 && snake[k]=='~' && snake[k+1]=='~' && snake[k+2]=='\0') return 2; return 0; } void Slove(int n) { const string kind[3]={"NA", "A", "B"}; string snake; for (int i=0; i<n; ++i) { cin >> snake; int flg=0; if (snake[0]=='>' && snake[1]=='\'') flg=Check_A(snake); else if (snake[0]=='>' && snake[1]=='^') flg=Check_B(snake); cout << kind[flg] << endl; } } int main(void) { int n; cin >> n; Slove(n); return 0; }
先ず、最初の2文字で場合分け。
次は各々詳細に調べ、答えを出力。
~了~