初めてのCodeForces

http://codeforces.com/
先日のPyconJP2014で@cocodripsさんのライトニングトークの影響を受けて、Python競技プログラミングに挑戦することにしました。

残念ながら普段の仕事ではコードを書くことがほとんどなく、pythonを書くことは全くないので、
瞬発力を鍛えるために挑戦したいと思います。
かなり恥ずかしいコードを晒すことになるけど、
学ばないで、そのままでいることの方が恥ずかしいと思うことにする。

競技プログラミングは他にもTopCoderAtCoderがあるようですが、
@cocodripsさん曰く、codeforcesが初心者におすすめ。

登録した後、右も左もわからないので、練習問題を解いてみる。
メニューにある[Problem Set]から1番最初の問題を解くことに。
http://codeforces.com/problemset/problem/1/A

問題の意図はわかったのですが、どうやってさばいて良いのか意味不明。。。
適当に解いてみるけど、fail...
というかルールを読まないといけませんでした。。。
http://codeforces.com/blog/entry/4088
インプットは標準入力から読み込んで、答えは標準出力に吐き出すんですね(^_^;)

# -*- coding:utf-8 -*-

import sys

def theater_square(sqr_width, sqr_height, block):
    row = int(sqr_width / block)
    col = int(sqr_height / block)
    if sqr_width % block != 0:
        row += 1
    if sqr_height % block != 0:
        col += 1
    return row * col

if __name__ == '__main__':
    (width, height, block) = map(int, sys.stdin.readline().split())
    sys.stdout.write(str(theater_square(width, height, block)))

テストコード

# -*- coding: utf-8 -*-
import unittest
import theater_square

class TheaterSquareTests(unittest.TestCase):
    def test_theater_square(self):
        self.assertEquals(theater_square.theater_square(6, 6, 4), 4)

たぶん本番はテストコード書いてる場合じゃないんでしょうね。
あと、if文のくだりは冗長かなと思います。

以下のリンク先に答えがありました。
http://codeforces.com/blog/entry/85

次のコンテストは9/19 0:30から始まるようなので、トライしてみます。
きっとボロボロですけど。