結果
問題 | 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 math from decimal import * def simple(n, N): """ TLEします """ sum_sheep = 0 for i in range(1,N+1): sum_sheep += i if sum_sheep < n: continue elif 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)/2 if sum_sheep < n: continue elif sum_sheep == n: print("YES") print(i) exit() else: print("NO") exit() def _formula(n): """ 2次方程式の解 99_corner3.txtでWAになる(桁落ちが原因) """ D = 1 + 8*n return (-1 + math.sqrt(D))/2 # ※式 def _formula2(n): """ 2次方程式の解 桁落ちに対処するため、quadratic_formulaの※式を分子の有理化したもの 99_corner6.txtでWAになる """ D = 1 + 8*n return 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 = 24 quadratic_formula(n)