初めてのCodeForces
http://codeforces.com/
先日のPyconJP2014で@cocodripsさんのライトニングトークの影響を受けて、Pythonで競技プログラミングに挑戦することにしました。
残念ながら普段の仕事ではコードを書くことがほとんどなく、pythonを書くことは全くないので、
瞬発力を鍛えるために挑戦したいと思います。
かなり恥ずかしいコードを晒すことになるけど、
学ばないで、そのままでいることの方が恥ずかしいと思うことにする。
競技プログラミングは他にもTopCoderやAtCoderがあるようですが、
@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から始まるようなので、トライしてみます。
きっとボロボロですけど。