白駿1789号[獣の和|python]


質問する
異なるN個の自然数の和をSと呼ぶ.Sを知ったときの自然数Nの最高値はいくらですか?
入力
第1行は自然数S(1≦S≦4294967295)を与える.
しゅつりょく
1行目は自然数Nの最値を出力する.
入力例1
200
サンプル出力1
19
1~nを加算して所定値より大きいnを探し、所定値でそのnを減算した値がnより小さいと、1~nの値で繰り返される値が加算されなければならないので、この(所定値)−(1~kの和)がnより小さい場合には、nを再び減算して値を求めた.
a = input()

n = 0
while True:
  if n*(n+1)/2 >= int(a):
    break

  n+=1

while True:
  if int(a) - n*(n+1)/2 > n:
    break

  n-=1

print(n+1)