2020-08-06 CADDi 2018 C, D
CADDi 2018 C, D 考察
CADDi 2018 C - Product and GCD
解説 AC 。
考えたこと。 N, P <= 10^12 なので前から順に求めるのは難しそうだ。かけて P になる数だし 10^12 という制約からおそらく素因数分解する (O(√P)) 。 gcd(a_i, a_{i+1}) を最大化するには……。わからん……。
解説によると gcd(a_1, ...) を g とすると P は g^N の倍数になる。 a_i はどれも g の倍数で N 個かけているのだから確かにそうだ。 P を素因数分解したときの素因数と g を素因数分解した素因数は一致するはず。 P を素因数分解したときの素因数のかたにのっている数字を N で割って切り捨てた数のとき g が最大になる。
わかるようでわからん。自分で見つけられるだろうか。そしてこれが茶色 diff なのか……。嘘でしょ……。
https://atcoder.jp/contests/caddi2018/submissions/15718970
CADDi 2018 D - Harlequin
いくつか例を書いて仮説を試したら AC した。
1のときfirstになる。2のときsecondになる。3のときはfirstになる。- ここまでで 1 種類のとき奇数なら
first偶数ならsecondになるとわかった。 1 1のときfirstになる (すべて取って勝てる) 。2 1のときfirstになる (1を取れば相手を 1 種類で偶数の状態にできるので勝てる) 。2 2のときsecondになる (1を取ると2 1で相手番になり負ける。1 1を取ると1 1で相手番になり負ける) 。3 1のときfirstになる (1を取ると2 1で相手番になり負ける or3で相手番になり負ける。1 1を取ると2で相手番になり勝てる。) 。3 2のときfirstになる (1を取ると2 2で相手番になり勝てる) 。1 1 1のときfirstになる (すべて取って勝てる) 。2 1 1のときfirstになる (1 1をとって2で相手番にすれば勝てる) 。2 2 1のときfirstになる (1をとって2 2で相手番にすれば勝てる) 。2 2 2のときsecondになる (いろいろ試したが勝てない) 。- ここまでで全部が偶数のときに手番を持つと負けると推測した (逆に 1 種類でも奇数のものがあればそれらをすべて取って相手番にすれば勝てる) 。
答えとしては前から順に走査して奇数がひとつあれば first ひとつもなければ second 。 O(N) N <= 10^5 。
https://atcoder.jp/contests/caddi2018/submissions/15725585
リングフィットアドベンチャー 50 日目。
いろいろやりたいことがあるはずなんだけどどうも調子が出ない。