とりあえず参加してみた、一応全部解けて12位でした
そういえば全体の正解者数とか見られるんですね
感想としては、大量のif文とか浮動小数点の誤差とかで頭がおかしくなりました
初心者向けにはヒントとかが出てくるようにしたりするのがいいような(だいたい解けない時は早い時間でやることがなくなるので
A: 積雪深差 - AtCoder Beginner Contest #001 | AtCoder
標準入力から2つの数値を読み込んで差を答える
# -*- coding: utf-8 -*- import sys import collections a = int(raw_input()) b = int(raw_input()) print a - b
B: 視程の通報 - AtCoder Beginner Contest #001 | AtCoder
書いてある複雑な条件を実装するだけ
入力がメートルなのに、条件はキロメートルだったりしてめんどくさい
# -*- coding: utf-8 -*- import math import sys import datetime m = int(raw_input()) if m < 100: print '00' elif 100 <= m <= 5000: print str(m / 100).zfill(2) elif 6000 <= m <= 30000: print str(m / 1000 + 50) elif 35000 <= m <= 70000: print str((m / 1000 - 30) / 5 + 80) elif 70000 <= m: print 89
C: 風力観測 - AtCoder Beginner Contest #001 | AtCoder
定数と条件分岐が多い、とても面倒な条件を実装する
浮動小数点の誤差に注意
条件分岐の部分にfor文を使ったりしたけど、あまりきれいに書けなかった
# -*- coding: utf-8 -*- import math import sys import datetime deg, dis = map(int, raw_input().split()) direction = 'N' seed_d = [11.25, 33.75, 56.25, 78.75, 101.25, 123.75, 146.25, 168.75, 191.25, 213.75, 236.25, 258.75, 281.25, 303.75, 326.25, 348.75] cond_d = [(seed_d[i], seed_d[i + 1]) for i in xrange(len(seed_d) - 1)] name_d ='NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'.split(' ') for i, k in enumerate(cond_d): l, u = k if l <= deg / 10.0 + 0.000001 < u: direction = name_d[i] seed_p = [0.0, 0.3, 1.6, 3.4, 5.5, 8.0, 10.8, 13.9, 17.2, 20.8, 24.5, 28.5, 32.7] cond_p = [(seed_p[i], round(seed_p[i + 1] - 0.1, 1)) for i in xrange(len(seed_p) - 1)] power = 12 for i, k in enumerate(cond_p): l, u = k if l <= round(dis / 60.0 + 0.000001, 1) <= u: power = i if power == 0: print 'C', 0 else: print direction, power
D: 感雨時刻の整理 - AtCoder Beginner Contest #001 | AtCoder
雨の降り始めと降り終わりの時間(5分刻みにまとめる必要がある)が与えられて、雨が降っている時間の範囲を時系列順にすべて答える
ただし、2つの範囲が重なっているときは1つにまとめる
いもす法っぽく(?)雨の降り始めと降り終わりを別の配列に記録してやった
11時60分と12時00分を別扱いにしてる的な間違いで1ミス
# -*- coding: utf-8 -*- import math import sys import datetime raw_input() history = set() for line in sys.stdin: start, end = line.strip().split('-') start = int(start[:2]) * 60 + int(start[2:]) start = start / 5 * 5 end = int(end[:2]) * 60 + int(end[2:]) end = (end + 4) / 5 * 5 history.add((start, end)) # print start, end raining = [0] * (2405 / 5) for s, e in history: s = s / 5 e = e / 5 raining[s] += 1 raining[e] -= 1 L = len(raining) acc = 0 for i in xrange(L): if acc == 0 and raining[i] != 0: head = i * 5 acc += raining[i] if acc == 0 and raining[i] != 0: print '{:04d}-{:04d}'.format(head / 60 * 100 + (head % 60), (i * 5) / 60 * 100 + ((i * 5) % 60))