ganmo::cout

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

Tenka1 Programmer Contest 2019

全体的に詰めの甘さで割を食った回でした
橙パフォを出し損ねたのでとてもくやしい

C - Stones (300点)

問題: C - Stones
「白白…白黒黒…黒」のパターンしか作ることはできないので、左からいくつ白くするかを0からNまで試して最小値を出力すればAC。
添字ミスとintのオーバーフローで2WA出してしまいました

拙解 (C++14):
Submission #5044010 - Tenka1 Programmer Contest 2019

D - Three Colors (600点)

問題: D - Three Colors
全然わからん!

E - Polynomial Divisors (800点)

問題: E - Polynomial Divisors
まず、すべての整数xf(x)=0とするには係数がすべてpの倍数である必要があり、かつフェルマーの小定理を用いると、x\neq 0についてx^{p-1} \equiv 1 \bmod p。したがって、\max N = 10^4以下の素数表をネットから持ってきておいて、\{ a_i\}i\%(p-1)でまとめた和がすべてpで割り切れて、かつa_0pの倍数であるか*1試して、通った素数が答えとなる。10^4以降の素数については\gcd \{ a_i\}の素因数がすべて答えとなる。これらで得られた素数を小さい順に重複なく出力してAC。フェルマーの小定理パートでO(N^2)、GCDパートでO(\sqrt{|a|_{\max}} + N\log |a|_{\max})
太字の部分を本番中に見落としていた所為で1ケースだけ通らずに橙パフォ逃しました…

拙解 (C++14, コンテスト終了後): Submission #5065069 - Tenka1 Programmer Contest 2019

F - Banned X (800点)

問題: F - Banned X
見てません

まとめ


数学系は800点でも物怖じせずに突っ込んでも大丈夫そうだけど詰めが甘いのはどげんかせんといかん

*1:x=0のときにはa_0だけが残る。