ABC 069 D - Decrease (Contestant ver.)
内容
- ABC069のD - Decrease (Contestant ver.)(600点)をpythonで解いた。
問題
考えたこと
- 操作を逆から考えて、答えを構築する。
とりあえず、N=50にして、初期値をN-1にして構築してみる。
各iでの操作回数をできるだけ同じようにすることで、構築できる。
ポイント
- 逆操作を考える。
- 全てにできるだけ平等にKを割り振る。
実装
#[N-1]*Nから、逆操作をして構築していく。 K = int(input()) N=50 #N=50で固定してやる ans=[N-1]*N #初期値は全てN-1 d = K//N # 全てにd回の操作をする r = K % N #r個には追加で1回操作をする for i in range(N): ans[i] += N*d #d回の操作での増加分 ans[i] -= d*(N-1) #他の(N-1)この操作に対する減少分 for i in range(r): #r個には追加で一回操作 ans[i] += N-(r-1) for i in range(r,N):#残りの奴らは引かれるだけ ans[i] -=r print(N) print(" ".join(map(str,ans)))
終わりに
- 最近コロナで一人の時間が増えたので、体を動かすためにランニングを始めました。(ランウォッチと、新しいランニングシューズがほしくなってしまった。)
- どうやら、apple watchはスマホを持たずに走っても、GPSの機能で距離とタイムを計測してくれるらしい。すごい!