結果
問題 |
No.3099 Parentheses Decomposition
|
ユーザー |
![]() |
提出日時 | 2025-05-14 12:59:49 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 4,941 bytes |
コンパイル時間 | 138 ms |
コンパイル使用メモリ | 82,512 KB |
実行使用メモリ | 67,488 KB |
最終ジャッジ日時 | 2025-05-14 13:01:15 |
合計ジャッジ時間 | 2,751 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 4 |
other | RE * 20 |
ソースコード
import math import sys # Function to calculate accumulated night hours from time 0 up to time t. # Night time is defined as the intervals [18 + 24k, 24 + 24k) and [0 + 24k, 6 + 24k) for integer k. # This function computes the length of the intersection of [0, t) with the union of all night intervals. def calculate_night_hours(t): """ Calculates the total duration of night time within the interval [0, t) hours. Night is defined as 18:00 to 6:00 (next day), which corresponds to intervals [18, 24) and [0, 6) within each 24-hour cycle. Args: t (float): The time point (in hours from time 0) up to which the accumulated night hours need to be calculated. Returns: float: The total accumulated night hours in the interval [0, t). """ # Use a small tolerance for floating point comparisons, especially comparing with 0. epsilon = 1e-9 # If t is effectively zero or negative, accumulated night time is 0. if t < epsilon: return 0.0 # Calculate the number of full 24-hour days completed. # math.floor ensures correct handling even if t/24.0 is slightly less than an integer # due to floating point representation. days = math.floor(t / 24.0) # Calculate the remaining time within the last (possibly partial) day. time_in_day = t - days * 24.0 # Adjust for potential floating point inaccuracies where t is extremely close # to a multiple of 24. If time_in_day is almost 24.0, it means we've completed # another full day, so we treat it as the start of the next day (time 0.0) # and increment the number of full days. if abs(time_in_day - 24.0) < epsilon: days += 1 time_in_day = 0.0 # Adjust if time_in_day calculation results in a tiny negative number close to zero, # which can happen due to precision limits in the subtraction t - days * 24.0. elif time_in_day < 0 and abs(time_in_day) < epsilon: time_in_day = 0.0 # Ensure time_in_day is non-negative after potential adjustments # This helps prevent issues in the subsequent logic if time_in_day was unexpectedly negative. time_in_day = max(0.0, time_in_day) # Each full day contributes 12 hours of night time. # This is 6 hours from the evening interval [18, 24) and 6 hours from the morning interval [0, 6). night_hours_full_days = days * 12.0 # Calculate the night hours within the last partial day interval [0, time_in_day). night_hours_last_day = 0.0 # The calculation depends on where time_in_day falls relative to the night intervals [0, 6) and [18, 24). if time_in_day <= 6.0: # If time_in_day is within [0, 6], the entire duration [0, time_in_day) is night time. night_hours_last_day = time_in_day elif time_in_day <= 18.0: # If time_in_day is within (6, 18], the night portion is only the [0, 6) interval. # The interval (6, time_in_day] is daytime. night_hours_last_day = 6.0 else: # time_in_day > 18.0 (and time_in_day < 24.0 due to the earlier adjustments) # If time_in_day is within (18, 24), the night portion includes the full [0, 6) interval # and the interval [18, time_in_day). night_hours_last_day = 6.0 + (time_in_day - 18.0) # Total accumulated night hours is the sum from the full days and the last partial day. return night_hours_full_days + night_hours_last_day def solve(): """ Reads input, calculates the total night driving time, and prints the result. """ # Read input values for start time T, speed S, and distance D from standard input. T, S, D = map(int, sys.stdin.readline().split()) # Calculate the start time in hours (absolute time from 00:00 on day 0). start_time_abs = float(T) # Calculate the total travel time in hours. # Use floating point division to handle potential fractional results. total_travel_time = float(D) / float(S) # Calculate the end time in hours (absolute time). end_time_abs = start_time_abs + total_travel_time # The total night driving time during the journey interval [start_time_abs, end_time_abs) # is the difference in accumulated night hours between the end time and the start time. # This relies on the property that calculate_night_hours(t) represents the integral # of a function that is 1 during night time and 0 during day time. result = calculate_night_hours(end_time_abs) - calculate_night_hours(start_time_abs) # Print the result to standard output. # Use f-string formatting with a high number of decimal places (e.g., 17) # to ensure the output meets the required precision (absolute or relative error <= 10^-5). print(f"{result:.17f}") # Execute the solve function when the script is run. # This is standard practice in competitive programming. if __name__ == '__main__': solve()