kmjp's blog

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

April Fools Day Contest 2013 : A - Mysterious strings、B - QR code

ここ3日間、TCO R2A→April Fool→CF #177とあって眠いね。
RateがつかないApril Fool Dayが一番好成績という皮肉。
本番A~Dは解けたので、ジョークのセンスはそこそこにあると言っていいのだろうか。
余り後学の役には立たないけど、解けた分は書いておこう。
まずはA,Bから。
http://codeforces.com/contest/290/problem/A
http://codeforces.com/contest/290/problem/B

A - Mysterious strings

1~40の数字Aが与えられるので、文字列を返す。

最初、テストケースを見てもさっぱりわからなかった。
何らかの計算をして、与えられた数字になる文字列を返すのかな?とか。
その後、出力された文字列を検索したところ、米国大統領の名前だということが分かった。
よってA番目の大統領の名前を返せばよい。
テストケースに「Van Buren」とあったので、他の大統領もミドルネームを入れたら失敗して無駄にResubmitする羽目に。

char ss[100][100]={
"Washington",
"Adams",
"Jefferson",
"Madison",
"Monroe",
"Adams",
"Jackson",
"Van Buren",
"Harrison",
"Tyler",
"Polk",
"Taylor",
"Fillmore",
"Pierce",
"Buchanan",
"Lincoln",
"Johnson",
"Grant",
"Hayes",
"Garfield",
"Arthur",
"Cleveland",
"Harrison",
"Cleveland",
"McKinley",
"Roosevelt",
"Taft",
"Wilson",
"Harding",
"Coolidge",
"Hoover",
"Roosevelt",
"Truman",
"Eisenhower",
"Kennedy",
"Johnson",
"Nixon",
"Ford",
"Carter",
"Reagan",
};
void solve() {
	int N = GETi();
	_P("%s\n",ss[N-1]);
	return;
}

B. QR code

謎のQRコードと、2つの整数値A1,A2が与えられるので、整数値を答える。

QRコードを分析するとURLが現れ、そこを見るとQRコードを01で文字列化したものが得られる。
あとは座標A1,A2に対応する値を返せばよい。

char ss[100][100]={
"111111101010101111100101001111111",
"100000100000000001010110001000001",
"101110100110110000011010001011101",
"101110101011001001111101001011101",
"101110101100011000111100101011101",
"100000101010101011010000101000001",
"111111101010101010101010101111111",
"000000001111101111100111100000000",
"100010111100100001011110111111001",
"110111001111111100100001000101100",
"011100111010000101000111010001010",
"011110000110001111110101100000011",
"111111111111111000111001001011000",
"111000010111010011010011010100100",
"101010100010110010110101010000010",
"101100000101010001111101000000000",
"000010100011001101000111101011010",
"101001001111101111000101010001110",
"101101111111000100100001110001000",
"000010011000100110000011010000010",
"001101101001101110010010011011000",
"011101011010001000111101010100110",
"111010100110011101001101000001110",
"110001010010101111000101111111000",
"001000111011100001010110111110000",
"000000001110010110100010100010110",
"111111101000101111000110101011010",
"100000100111010101111100100011011",
"101110101001010000101000111111000",
"101110100011010010010111111011010",
"101110100100011011110110101110000",
"100000100110011001111100111100000",
"111111101101000101001101110010001",
};
void solve() {
	int f,r,i,j,k,l,x,y;
	x = GETi();
	y = GETi();
	_P("%c\n",ss[x][y]);
	return;
}

まとめ

大統領の問題は米国在住者が有利だよなぁ…。
サンプルケースがもっと知名度の高い大統領ならもっとすぐに気づけたかも?