Ruteのプログラミング日記

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

AtCoder Beginner Contest 163 感想 &解説

AtCoder Beginner Contest 163が先ほど終了しました。

皆さん、お疲れ様でしたー。

コンテスト開始後問題を開こうとすると

"500 Internal Server Error" と出たと思います。

そうです。鯖落ちしていたのです。

ある方はこのような諸説をたてていたりします...

A問題ではIE(内部エラー)を初めて観測しました。

 21:15:18には運営からunratedの通知が来ました。正直なところこれはもう仕方が無かったのかなと思います。

AtCoder社のサーバーってどのようになっているのかが気になります。

 

今回は、A問題・B問題・C問題を7分で通しました。(おそらく簡単だったかもしれません)

 以降、解説と考察です。

A問題 A - Circle Pond

https://atcoder.jp/contests/abc163/tasks/abc163_a

半径がNの円の周長は2 \pi Nです。

Python3では、math.piを利用することで円周率を利用できるため

この値を出力できます。

https://atcoder.jp/contests/abc163/submissions/12080972

 

B問題 B - Homework

https://atcoder.jp/contests/abc163/tasks/abc163_b

ループを利用するとも考えたのですが、以下のような条件分岐によりO(1)で実行ができます

(1) もし sum(A) ≦Nならば、N-sum(A)を出力する

(2) そうでなければ、-1を出力する

https://atcoder.jp/contests/abc163/submissions/12082247

 

C問題 C - management

https://atcoder.jp/contests/abc163/tasks/abc163_c

この問題ですが、まず 0の要素がN個あるリストを作成します。

次に、以下のようなループを回します。

リストの[A[i]-1]番目の要素を+1する

あとは、リストの各要素を出力すれば期待通りの出力を求めることが出来ます。

時間計算量はO(N)です。

https://atcoder.jp/contests/abc163/submissions/12095608

 

以降、unratedになってしまったので考察です。

D問題 D - Sum of Large Numbers

https://atcoder.jp/contests/abc163/tasks/abc163_d

N = 3の時、各Kに関して組み合わせの数は以下のようになります。

以降、10^{100}といちいち書くのはややこしいので10^{100}+NNとします。

K = 1 0,1,2,3の3通り

K = 2 0 and 1 , 0 and 2, 0 and 3, 1 and 2, 1 and 3, 2 and 3

このうち、0 and 3と1 and 2が被っているので5通りになります。

K = 3 0 and 1 and 2, 0 and 1 and 3, 0 and 2 and 3, 1 and 2 and 3の4通り

 K = 4 0 and 1 and 2 and 3 の1通り

 

同様に、N=4の場合

K =1 = 5通り

K =2 = 7通り

K =3 = 7通り

K =4 = 5通り

K =5 = 1通り

となります。

ここで、気づくのは本来の通り数が6通り以上の時に通り数が少なくなっているということです。

これを実装すればよいのですが、Python3で実装しようとするとなぜかオーバーフローになってしまいました。別の解法があるかもしれないので、終了後に考えてみようと思います。(コメントなどで原因を教えていただけると助かります)

f:id:Rute_programming:20200419222925p:plain

▲ Overflowになる原因を教えて下さい

以上、AtCoder Beginner Contest 163 感想&解説 でした。

最後に「幻となった水パフォーマンス」の画像を掲載します。

(多分コンテスト終了後には茶色くらいに落ちていると思います)

f:id:Rute_programming:20200419223502p:plain

▲ 幻となった水パフォーマンス

 

ここで皆さんにお知らせがあります。

来週のyukicoderコンテストで、私が作問した問題が出題される予定です!(といっても、1問だけなのですが)

難易度は★1 ~ 1.5相当を予定しています。

コンテスト終了後、当ブログにて解説を公開する予定です。お楽しみに!