Codeforces #71 A "Bus Game"

問題:http://codeforces.com/contest/79/problem/A

百円玉と十円玉の枚数が与えられる.CielとHanakoが220円ずつとっていくゲームをする.このとき,それぞれの220円のとり方は百円玉が多いとり方,十円玉が多いとり方を用いる.どちらかが220円をとれなくなったときゲームの敗者とするとき,ゲームの勝者を求める.

最初,220円の倍数のとり方でやると勘違いしていて220円x5=1100円とかいろいろ考えて一時間経ってた.220円ぴったしだと気づいたら2*100+2*10, 1*100+12*10, 22*10の3通りしかないのでさっさと実装.

コード

import java.util.*;

public class A {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int x = s.nextInt(), y = s.nextInt();
		for (;;) {
			int rx = 0, ry = 0;
			for (int i = 0; i < 3; ++i) {
				if (x >= i && 22 - 10 * i <= y) {
					rx = i;
					ry = 22 - 10 * i;
				}
			}
			if (rx == 0 && ry == 0) {
				System.out.println("Hanako");
				return;
			}
			x -= rx;
			y -= ry;
			rx = 0;
			ry = 0;
			for (int i = 2; i >= 0; --i) {
				if (x >= i && 22 - 10 * i <= y) {
					rx = i;
					ry = 22 - 10 * i;
				}
			}
			if (rx == 0 && ry == 0) {
				System.out.println("Ciel");
				return;
			}
			x -= rx;
			y -= ry;
		}
	}
}