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; }