ganmo::cout

競技プログラミング始めました

AtCoder Beginner Contest 114

初めて0WAでABCD全完した!初めて上限Perf行った。初めて順位表の上位10%以上行った。

A - 753

問題:A - 753
{X=3 \vee X=5 \vee X=7} のとき"YES"、そうでなければ"NO"を出力。
出力が大文字なのでそこは注意した*1

拙解 (C++): Submission #3700897 - AtCoder Beginner Contest 114

B - 754

問題:B - 754
愚直解。連続する3個の数字と753の差の絶対値を全部出して最小値を更新して出力する。

拙解 (C++): Submission #3702599 - AtCoder Beginner Contest 114

C - 755

問題:C - 755
{O(1)}の解は思いつかなかったので以前の反省を活かし愚直に数え上げた。
4進数の各桁を{(0,1,2,3)\rightarrow(0,3,5,7)}のように置き換えた上で七五三数でないものは弾くことで、七五三数を小さい順に列挙できる。0から*2列挙していってNを超えたら終了。

拙解 (C++): Submission #3704291 - AtCoder Beginner Contest 114

D - 756

問題:D - 756
1 \le N \le 100なのでbit全探索か何かと身構えたが、その必要はなかった。
N!に含まれる素因数は100以下*3なので、その分の素数列を持っておいて1からNまでの素因数分解の指数*4を足していく。
約数の個数は素因数分解の指数に1を足したものの相乗で求められるので、
75=(2+1)(4+1)^2=(4+1)(14+1)=(2+1)(24+1)=74+1
から、指数が(2,4,4),(4,14),(2,24),(74)となる素因数の組み合わせを全部足して出力。

拙解 (C++): Submission #3705642 - AtCoder Beginner Contest 114

まとめ

Dで素数表の19を10と書き間違えて10分くらい時間食ってしまったが、Perf1600初めて達成した!

*1:以前それで1WA食らった

*2:1からでよかったっぽい

*3:ただし100素数ではない

*4:a^nn