2020年2月17日月曜日

CodeChef Februrary Challenge - No Change Required

整除性に関する列D1D2...DNPD_1|D_2|...|D_N|Pが作れるとき、PPを超えるコインを持っていれば必ずちょうどPPが払える。

上の条件を満たさない場合の反例の作り方について。PPを割り切らないDiD_iがある場合は自明な例が作れる。すべてのDiD_iPPの約数である場合、Di1DiD_{i-1} \nmid D_iとなっている部分を見つける。このとき、xDi=PxD_i = Pを満たすxxyDi1>DiyD_{i-1} > D_iを満たす最小のyyについて、コインi1i-1yy枚、コインiix1x-1枚持てば、どのコインを減らしてもPP未満になる。


最初、すべてがPPの約数ならNOと決めつけていて、P=12P=12で4セント2枚と6セント1枚みたいな例に気づくのに長時間かかってしまった。