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