Ruteのプログラミング日記

競技プログラミング(AtCoder)の問題の解説や、過去問を解いた感想、また解けない過去問について共有したいと思ってます。

AtCoder Beginner Contest 156 参加記

Atcoder Beginner Contest 156 (2020,02,22)参加記

 

こんにちは。昨日ABC156に参加された皆さん、お疲れ様でした。

私の方ですが結果から申しますとぎりぎり茶パフォーマンスということになりました。

パフォーマンス:403 レーティング 474467 (3完40分程度)

 

【解説】

A問題 Beginner

https://atcoder.jp/contests/abc156/tasks/abc156_a

内部レーティングR'とすると、

 N≧10のとき、R' = R-100*(10-N)

そうでないときR' = Rとすればよい。

 

B問題 Digits

https://atcoder.jp/contests/abc156/tasks/abc156_b

基本情報技術者のような問題

NKより小さくなるまで以下の処理をつづける。

(つまりwhile N≧K)

NKで割ったあまりをリストに入れて、 N→N//K(NKで割った商)とする。

そのあと、割れなくなったあまりをリストに加える。

あとは、そのリストの要素数が答えで、これを出力すればよい。

 

ちなみに

N進数をK進数に直す問題は基本情報技術者試験の範囲内です。

例)10進数の整数NK進数で直す

例) N = 10 , K = 2の場合

10÷2 = 5 あまり 0

5÷2 = 2 あまり 1

2÷2 = 1 あまり 0

1÷2 = 0 あまり 1

ここで、商が0になったことにより、計算を終了。あまりを下から上に読むと、1010となり、これで10を2進数で表すことができました。

 

C問題 Rally

https://atcoder.jp/contests/abc156/tasks/abc156_c

ここで、集会が数直線上の任意の整数値の座標で開くことができるとなっているのがポイント。

 

今回、N人の座標集合X_1,X_2,...X_Nについて平均を取得し、それをPython3ならroundでまとめたときの値(座標)が、N人が消費する体力の総和が最小値となるPであることを考察しました

(なお、1回目は平均を切り上げてしまい痛恨のWA...)

 

D問題 Bouquet

https://atcoder.jp/contests/abc156/tasks/abc156_d

この問題ですが、組み合わせnCkにおけるkが1からnのときの組み合わせの総和が2^{n}-1であることから、

2^{N}-1-NCa-NCbを出力するという問題でした。

数式はわかったのですが、出力がわからずあえなく撃沈。

解説を見ても何とフェルマーの小定理というものが出ていたことから高度な数学力が問われていたように感じます。(自分は数弱なんですが....)

 

ということでABCD(Dは解説じゃないですが)の解説でした。

 

何か感想だったり、解法で面白いものとかがあったりしたらコメントなどでお願いします。

それでは今回はこの辺で。

 

追記)

AtCoderのコンテスト中ではありますが、22:22:22にツイートを行いました。

すると、このツイートが なんと22:22:22.224にツイートされたことがわかりました。

 

おそらく世界一...22:22:22.222に近いツイートをしていると思います。暇な方は見てください((

https://twitter.com/rute_not_route/status/1231207604178698240