結果
問題 | No.105 arcの六角ボルト |
ユーザー |
![]() |
提出日時 | 2025-03-20 20:54:08 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 161 ms / 5,000 ms |
コード長 | 1,862 bytes |
コンパイル時間 | 493 ms |
コンパイル使用メモリ | 82,236 KB |
実行使用メモリ | 80,740 KB |
最終ジャッジ日時 | 2025-03-20 20:55:03 |
合計ジャッジ時間 | 882 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 1 |
ソースコード
import math import sys def main(): input_lines = [line.strip() for line in sys.stdin if line.strip()] ptr = 0 T = int(input_lines[ptr]) ptr += 1 for _ in range(T): # Skip empty lines between test cases while ptr < len(input_lines) and input_lines[ptr] == '': ptr += 1 points = [] for _ in range(6): if ptr >= len(input_lines): break x, y = map(float, input_lines[ptr].split()) ptr += 1 points.append((x, y)) candidates = [] for x, y in points: theta_rad = math.atan2(y, x) theta_deg = math.degrees(theta_rad) % 360.0 for alpha in [0.0, 60.0, 120.0, 180.0, 240.0, 300.0]: candidate = (theta_deg - alpha) % 360.0 if 0.0 <= candidate < 50.0: candidates.append(candidate) # Sort the candidates to find the best cluster candidates.sort() max_cluster = [] eps = 1e-8 # Adjusted to handle floating-point precision n = len(candidates) i = 0 while i < n: current_val = candidates[i] j = i + 1 while j < n and (candidates[j] - current_val) <= eps: j += 1 current_cluster = candidates[i:j] if len(current_cluster) > len(max_cluster): max_cluster = current_cluster i = j # Calculate the average of the best cluster if not max_cluster: # According to the problem statement, this case should not occur print("0.0000000000") else: avg_theta = sum(max_cluster) / len(max_cluster) # Print with sufficient precision print("{0:.10f}".format(avg_theta)) if __name__ == "__main__": main()