https://yukicoder.me/problems/no/648
基本的にはむこさんの解説のとおり、(sqrt(8*n+1)-1)/2
を出力すれば良いですが、実装上の別解を。
- Integer sqrtの利用
- sqrtの誤差が問題になるなら、整数での平方根をニュートン法などで計算すればよいでしょう。
- ただし、(LLでないなら)128bit幅の整数が必要になるので注意。
- yhpg「多段階選抜」の復習でライブラリを作っていました。
- sqrtlの利用
- long doubleの仮数部が64bitであることを思い出せば、sqrtlを使えば解けることは想像に固くありません。1
- C https://yukicoder.me/submissions/206063
- Python (ctypes) https://yukicoder.me/submissions/207816
- intをマーシャリングするときにfloatを経由されるといけないので、sscanfを用いて自力でマーシャリングする必要があります
-
あれ、topcoder初出場で撃沈したのは誰だ^^; (SRM 635 Div2 Medやらyukicoder No.413やら)↩