結果
問題 | No.648 お や す み |
ユーザー |
|
提出日時 | 2018-02-19 17:31:35 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 34 ms / 2,000 ms |
コード長 | 1,380 bytes |
コンパイル時間 | 407 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 11,520 KB |
最終ジャッジ日時 | 2024-09-13 21:11:41 |
合計ジャッジ時間 | 5,275 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 84 |
ソースコード
# -*- coding: utf-8 -*-import mathfrom decimal import *def simple(n, N):""" TLEします """sum_sheep = 0for i in range(1,N+1):sum_sheep += iif sum_sheep < n:continueelif sum_sheep == n:print("YES")print(i)exit()else:print("NO")exit()def sum_one_to_n(n, N):""" 1からnまでの和 = n*(n+1)/2 を求めるveryverylarge1.txtでTLE"""for i in range(1, N+1):sum_sheep = i*(i+1)/2if sum_sheep < n:continueelif sum_sheep == n:print("YES")print(i)exit()else:print("NO")exit()def _formula(n):""" 2次方程式の解99_corner3.txtでWAになる(桁落ちが原因)"""D = 1 + 8*nreturn (-1 + math.sqrt(D))/2 # ※式def _formula2(n):""" 2次方程式の解桁落ちに対処するため、quadratic_formulaの※式を分子の有理化したもの99_corner6.txtでWAになる"""D = 1 + 8*nreturn Decimal(4*n)/Decimal(1+math.sqrt(D))def quadratic_formula(n):""" 2次方程式の解を求める方法1からnまでの和の公式を変形すると、i**2 + i - 2*n = 0このときのiを求めて、iが正の整数ならば"YES"である"""i = _formula2(n)if i != math.floor(i):print("NO")exit()print("YES")print(int(i))exit()if __name__ == "__main__":n = int(input())N = 2*(10**18)getcontext().prec = 24quadratic_formula(n)