0139-Snake

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0139&lang=jp
ヘビの長さの上限の問題でWrong Answerを大量生産した問題。
考えうるA,Bの種のヘビをすべてリストアップして、与えられた文字列がそれと一致するか確かめる。

実装を容易にするために、与えられた文字列を指定された回数繰り返したものを返す関数vbString()を作成した。VB6のString関数は1文字を繰り返す機能しか無いけど、似たようなものということで。

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
 
string vbString(int Number,string Character){
        string res="";
        for(int i=0;i<Number;i++) res+=Character;
        return res;
}
string checksnake(string s){
        string t;
        for(int i=1;i<60;i++){
                t=">\'"+vbString(i,"=")+"#"+vbString(i,"=")+"~";
                if(t==s) return "A";
        }
 
        for(int i=1;i<60;i++){
                t=">^"+vbString(i,"Q=")+"~~";
                if(t==s) return "B";
        }
        return "NA";
 
}
int main(){
        string s;
        int n,i=0;
        scanf("%d\n",&n);
        for(i=0;i<n;i++){
                getline(cin, s);
                cout << checksnake(s) << endl;
        }
        return 0;
}