kmjp's blog

競技プログラミング参加記です

YUHA C88 謎解きコン : A - エンド・オブ・ビギニング、B - ハヌマーンの試練

何とかそこそこの順位を取れた。
競プロ成分の少ないF・Jはここでは扱わないです。
http://yuha-c88.contest.atcoder.jp/tasks/yuha_c88_a
http://yuha-c88.contest.atcoder.jp/tasks/yuha_c88_b

A - エンド・オブ・ビギニング

N個の文章からなる暗号文が与えられる。各文章は[BEGINNING|MIDDLE|END] OF (文字列)の形式をとる。
この暗号文を解読せよ。

(文字列)部分の先頭/真ん中/末尾を1文字ずつ抜き出せばよい。

int N;
string S,T,U;

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	FOR(i,N) {
		cin>>S>>T>>U;
		if(S[0]=='B') _P("%c",U[0]);
		if(S[0]=='M') _P("%c",U[U.size()/2]);
		if(S[0]=='E') _P("%c",U.back());
	}
	_P("\n");
}

B - ハヌマーンの試練

N枚のコインを用いて2人のターン制ゲームを行う。
各人のターンでは1~3枚のコインを取る。
最後のコインを取った方が勝者となる。
両者が最適な戦略を取ったとき、先手後手どちらが勝つか。

典型的な石取り問題。
Nが4の倍数なら後手、それ以外は先手必勝である。

ll N;

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	if(N%4==0) cout<<"GO"<<endl;
	else cout<<"SEN"<<endl;
}

まとめ

AがFA取れて良かった。