電車の移動や空き時間が結構あったので,簡単なものを埋めておきました.
長くなりそうなので,続きから
wupc2nd A問題
問題
A: 団子とうさぎ - 第2回早稲田大学プログラミングコンテスト | AtCoder
回答
Submission #399416 - 第2回早稲田大学プログラミングコンテスト | AtCoder
Pythonの内包表記を上手く使って集合の和を求めて,割り算をするだけですね.
n, k = map(int, input().split()) print(sum([i ** 2 for i in range(n + 1)]) % k)
wupc2nd B問題
問題
B: 雨上がり - 第2回早稲田大学プログラミングコンテスト | AtCoder
回答
Submission #399453 - 第2回早稲田大学プログラミングコンテスト | AtCoder
いわゆる貪欲法みたいな回答パターンで行けると思いました.(3歩進めるなら3歩,ダメなら2歩,それでもだめなら1歩… 1歩もダメなら水たまりを無視して3歩一気に進む! みたいな)
n = int(input()) k = list(input()) count = 0 pointer = 0 while pointer < n - 1: for i in range(1, 4): tp = pointer + (4 - i) if tp < n and k[tp] == ".": pointer = tp break else: pointer += 3 if pointer + 3 < n else n - pointer count += 1 print(count)
Code Formula 2014 予選B A問題
問題
A: サイコロ - Code Formula 2014 予選B | AtCoder
回答
Submission #399413 - Code Formula 2014 予選B | AtCoder
サイコロの裏面を求める.7 - 入力された値で簡単に求まりますね.
print(7 - int(input()))
京都大学プログラミングコンテスト2013 A問題
問題
A: 旧総合研究7号館 - 京都大学プログラミングコンテスト2013 | AtCoder
回答
Submission #399412 - 京都大学プログラミングコンテスト2013 | AtCoder
入力されたものを見ながら,作成年度より前であれば更新… みたいな感じ.
入力される年度がバラバラだったらソートする手間が入るので,その辺りは省略されていて気が楽でした….
(まあ,ソートするだけで良いので,特に問題無いとは思いますが)
name = "kogakubu10gokan" n, q = map(int, input().split()) for _ in range(n): s = input().split() if int(s[0]) <= q: name = s[1] else: break print(name)
New Year Contest 2015 A問題
問題
A: 2015 - New Year Contest 2015 | AtCoder
回答
Submission #399399 - New Year Contest 2015 | AtCoder
2進数に変換して,反転したものが一致しているかどうかを確認する.
reverseメソッドとか利用してみたかったけど,これ戻ってくるオブジェクトがアレで使いづらかったので,s[::-1]で反転.
また,2進数に変換すると,0b~~みたいな形式になるので,0bの部分を省くために,配列2つ目から取り出すように工夫….
s = str(bin(int(input())))[2:] print("Yes" if s == s[::-1] else "No")
Donutsプロコンチャレンジ2015 A問題
問題
A: ドーナツの体積 - Donutsプロコンチャレンジ2015 | AtCoder
回答
Submission #399359 - Donutsプロコンチャレンジ2015 | AtCoder
公式に打ち込むだけ.
import math as m R, D = map(int, input().split()) print((R * R * m.pi) * (D * 2 * m.pi))
Code Formula 2014 予選A A問題
問題
A: 立方数 - Code Formula 2014 予選A | AtCoder
回答
Submission #399253 - Code Formula 2014 予選A | AtCoder
探索範囲を間違えまくってて辛かった.pythonのrange(0, N)は0からN-1までしか調べないってそれ一番言われてるから…(このミスのせいで引っかかりまくる)
ここは, range(int(math.pow(n, 1.0 / 3.0)) + 2)ですね,+1ではないです.
Nの1/3 乗のところまで調べれば十分です.
import math n = int(input()) for i in range(int(math.pow(n, 1.0 / 3.0)) + 2): if i ** 3 == n: print("YES") break else: print("NO")
Code Formula 2014 予選A B問題
問題
B: ボウリングゲーム - Code Formula 2014 予選A | AtCoder
回答
Submission #399348 - Code Formula 2014 予選A | AtCoder
地道にreplaceですかねえ.
元々のボウリングピンの配置は文字列で考えました.それと一回目,二回目,倒れなかったものでそれぞれ記号を置換.
倒れなかったものの置換はもう少し簡単に出来るきがしないでもないですが… どうでしょうか?
def replacer(li, ch): for elem in li: for i in range(4): table[i] = table[i].replace(str(elem), ch) table = ["7 8 9 0", " 4 5 6 ", " 2 3 ", " 1 "] a, b = map(int, input().split()) replacer(map(int, input().split()), ".") replacer(map(int, input().split()), "o") replacer(list(range(0, 10)), "x") for i in range(4): print(table[i])
天下一プログラマーコンテスト2014予選B A問題
問題
A: HAGIXILE - 天下一プログラマーコンテスト2014予選B | AtCoder
回答
Submission #399261 - 天下一プログラマーコンテスト2014予選B | AtCoder
replaceメソッドで置き換えるだけ.
print(input().replace("HAGIYA", "HAGIXILE"))
CODE FESTIVAL 2014 決勝(オープン) A問題
問題
A: 50m走 - CODE FESTIVAL 2014 決勝(オープン) | AtCoder
回答
Submission #399263 - CODE FESTIVAL 2014 決勝(オープン) | AtCoder
一見,複雑そうな計算が必要かと思いますが,入力と回答をよく見ると,50 / 50m走るのにかかった時間(入力)で求まることに気づきます.
print(50 / int(input()))
CODE FESTIVAL 2014 決勝(オープン) B問題
問題
B: 暗算ゲーム - CODE FESTIVAL 2014 決勝(オープン) | AtCoder
回答
Submission #399274 - CODE FESTIVAL 2014 決勝(オープン) | AtCoder
文字列をリストに変換して,インデックスの値で足すか引くかを決定して計算.
l = list(map(int, list(input()))) res = l[0] for i in range(1, len(l)): res += l[i] if i % 2 == 0 else -l[i] print(res)
ひとまず,第一弾終わり!!!