結果
問題 | No.1118 sin(x)/xの二乗和 |
ユーザー |
![]() |
提出日時 | 2025-03-26 15:53:56 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 45 ms / 2,000 ms |
コード長 | 1,110 bytes |
コンパイル時間 | 278 ms |
コンパイル使用メモリ | 82,236 KB |
実行使用メモリ | 60,676 KB |
最終ジャッジ日時 | 2025-03-26 15:54:38 |
合計ジャッジ時間 | 2,060 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
import mathdef compute_S_alpha(alpha):sum_val = 0.0j = 0while True:x_j = alpha + jif x_j == 0:term = 1.0else:term = (math.sin(x_j) / x_j) ** 2# Check if the term is too small to contributeif sum_val == 0.0:sum_val += termj += 1continueif term < 1e-16 * sum_val:breaksum_val += termj += 1# Add tail approximation: 0.5 / (alpha + j)tail = 0.5 / (alpha + j)sum_val += tailreturn sum_valdef main():x = float(input().strip())if x.is_integer():result = (math.pi + 1) / 2else:m = math.floor(x)alpha = x - msum_part = 0.0for k in range(m):x_k = alpha + kif x_k == 0:term = 1.0else:term = (math.sin(x_k) / x_k) ** 2sum_part += termS_alpha = compute_S_alpha(alpha)result = S_alpha - sum_partprint("{0:.20f}".format(result))if __name__ == '__main__':main()