geam1113’s diary

主にAtcoderのコンテストの備忘録を書きます。AtCoder緑と水色を行ったり来たりしています。

ARC139 参加記録

コンテスト中AC:A

A - Trailing Zeros

説明のため、二進数10桁しかないと仮定します。

例えば、T_i = 3の時、??????1000となり、?の部分が未確定です。
この時、??????の部分は、000000〜111111があり得ます。

000000, 000001, ...と増加させていくと、ある境でA_{i-1}\lt A_iとなり、以降全てこれが成立します。
よって、この境界は二分探索可能です。

最大何桁目まで考慮するかですが、問題文にも特に言及はなかったので64bit整数に収まるだろうと推測し、60桁としました。
ACできたので、問題なかったようです。

提出コード

コンテスト後に最大桁数について考えてみました。
A_Nが最大となるのは、N=10^5かつ、T_iがいずれも40の場合だと思います。

100...0が0〜41桁目までありますが、一旦無視して42桁目以降を考えます。

Aの42桁目以降は、{00...001, 00...010, 00...011,...}という感じで+1ずつ増やしていけばA_Nが最小となるので、A_Nの42桁目以降は10^5-1の二進数表記となっているはずです。

従って、A_Nの最大は、
99999の二進数表記 11000011010011111の17桁

10000000000000000000000000000000000000000の41桁

を連結させた数になります。

従って、58桁が考慮すべき最大桁数となると思います。