A問題しか解けなかった。
B問題で爆死して、C問題は部分点のみで85位orz
あまりにもアレだったのでC問題は制限時間後に解いた。
A: 孫子算経 - 天下一プログラマーコンテスト2012 予選B | AtCoder
1以上127以下の範囲で、3で割るとa、5で割るとb、7で割るとc余る数を小さい順に答える。
forループで回して条件を満たすかチェックするだけ。
# -*- coding: utf-8 -*- a, b, c = map(int, raw_input().split()) for i in xrange(1, 128): if i % 3 == a and i % 5 == b and i % 7 == c: print i
B: camel_case - 天下一プログラマーコンテスト2012 予選B | AtCoder
キャメルケース(camelCase)とスネークケース(snake_case)を相互変換するだけ……のはずなのだが何か条件を見落としているのかバグがあるのか動かなくて死亡。
# -*- coding: utf-8 -*- a = list(raw_input()) i = 0 L = len(a) head = 0 tail = L for i in xrange(L): if a[i] == '_': head += 1 else: break for j in xrange(L - 1, -1, -1): if a[j] == '_': tail -= 1 else: break def isSnake(a, head, tail): S = a[head:tail] check = 0 for i in S: if i == '_': check += 1 if check >= 2: return False else: check = 0 for i in "".join(S).split('_'): F = True for j in i: if not('0' <= j <= '9') and not('a' <= j <= 'z'): return False if '0' <= j <= '9' and F: return False F= False return True def snakeToCamel(a, head, tail): i = 0 while head <= i < tail: if a[i] == '_': a[i + 1] = a[i + 1].upper() a.pop(i) i -= 1 tail -= 1 i += 1 print "".join(a) def isCamel(a, head, tail): S = a[head:tail] check = 0 for i in S: if 'A' <= i <= 'Z': check += 1 if check >= 2: return False else: check = 0 if '0' <= S[0] <= '9' or 'A' <= S[0] <= 'Z': return False for i in S: if not('0' <= i <= '9') and not('a' <= i <= 'z') and not('A' <= i <= 'Z'): return False return True def camelToSnake(a, head, tail): i = head while head <= i < tail: if 'A' <= a[i] <= 'Z': a[i] = a[i].lower() a.insert(i, '_') tail -= 1 i += 1 i += 1 print "".join(a) if isSnake(a, head, tail): snakeToCamel(a, head, tail) elif isCamel(a, head, tail): camelToSnake(a, head, tail) else: print "".join(a)
C: 席が足りない - 天下一プログラマーコンテスト2012 予選B | AtCoder
社員の勤務時間が与えられて、必要な座席数を求める。
開始時間について貪欲にやれば解けるみたいですが、区間がオーバーラップするかの判定を間違えていて時間内には解き終わらず。
ところで退社時間<=35:59って……((((;゚Д゚))))
# -*- coding: utf-8 -*- N = int(raw_input()) T = [] for i in xrange(N): s, e = raw_input().split() sh, sm = s.split(':') s = 60 * int(sh) + int(sm) eh, em = e.split(':') e = 60 * int(eh) + int(em) T.append((s, e)) T.sort(key = lambda x: x[0]) c = 0 while len(T) > 0: c += 1 t = T.pop(0) h = t i = 0 while i < len(T): if t[1] <= T[i][0] and T[i][1] - 24 * 60 <= h[0]: t = T.pop(i) i -= 1 i += 1 print c
D: 大爆発 - 天下一プログラマーコンテスト2012 予選B | AtCoder
ボンバーマンっぽい何か。解いてない