Web系エンジニアのアウトプット練習場

エンジニアリングと書評が中心。たまに全然関係無い話もします。
トップページ/競技プログラミング/【AtCoder Beginner Contest 136】感想戦/
2019年08月05日

【AtCoder Beginner Contest 136】感想戦

競技プログラミングAtCoder

まず結果は、A, B, C, Dの4完でパフォーマンスは1,041でした。



Dは勘違いで一回WAしたけど、他はきっちり一発でACしました。
特にこれといって目立った凡ミスもなかったし、今回は満足のいく結果でした。
強いて言えば、B問題が他の問題よりも相対的に時間がかかりました。 単純に数え上げれば間に合うようなのですが、ちょっと凝ったことをしてしまいました。

import math
 
N = int(input())
log = int(math.log(N, 10))
 
ans = 0
for i in range(log):
    if i % 2 == 0:
        ans += 10 ** (i + 1) - 10 ** i
 
if log % 2 == 0:
    ans += N + 1 - (10 ** log)
 
print(ans)

各桁まとめて足すという解法です。
そんなことしなくても1≤N10^5なので、↓の解法で十分間に合うとのこと。

N = int(input())
ans = 0
for i in range(1, N + 1):
    if len(str(i)) % 2 == 1:
        ans += 1
print(ans)

無駄に時間をかけたなぁ。
E問題は普通に難しかったので、時間を見つけて復習するつもりです。
レート緑が目前ですが、緑まではA-Dを確実に丁寧に取る戦略のほうが良さげかなと思っています。
十分緑真ん中くらいのパフォは出ますし。
緑になった後に、E問題も視野に入れてみようと思います。