yukicoder No.72 - そろばん Med
問題
アイデア
上部に個、下部に個の珠を配置する時に、作ることの出来る状態の種類がなので、始まりであることを想定すれば作ることの出来る最大の数はとなる。も考慮して変数をのみにすると、と平方完成できるので、が整数であるときはの時が最大値を取り、整数でない時は最も近い値かのときになる。このようにダイレクトに最適解を求められる。また、今回制約が大きいのでPythonを使った。そこで、初歩的なミスをしてしまっていたので、メモしておく。Pythonの割り算をC的に使おうとすると、普通の割り算記号/
では小数点を切り捨てず、浮動小数点型で返ってくる。これがどうやらバグの原因になっていたらしい。ということでこのような場合に使うべきなのが小数点以下を切り捨てる割り算//
であり、それを使うことで今回はACとなった。Pythonは今年に入ってから勉強し始めたのでまだまだ覚えるべきことが多い...
実装(Python3)
n = int(input()) y = n//2 ans = (n-y)*(y+1)+y print(ans%1000007)