結果
問題 |
No.211 素数サイコロと合成数サイコロ (1)
|
ユーザー |
![]() |
提出日時 | 2025-05-14 12:59:48 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 41 ms / 1,000 ms |
コード長 | 2,610 bytes |
コンパイル時間 | 215 ms |
コンパイル使用メモリ | 82,604 KB |
実行使用メモリ | 53,996 KB |
最終ジャッジ日時 | 2025-05-14 13:00:56 |
合計ジャッジ時間 | 2,324 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
# -*- coding: utf-8 -*- import sys # Function to read a single integer from standard input def get_int(): """Reads a line from stdin, removes leading/trailing whitespace, and converts it to an integer.""" return int(sys.stdin.readline().strip()) # Main function containing the problem-solving logic def solve(): """Solves the Prime and Composite Dice problem.""" # Read the target product K from input k = get_int() # Define the faces of the prime die (素数サイコロ) # These are the first 6 prime numbers. prime_faces = [2, 3, 5, 7, 11, 13] # Define the faces of the composite die (合成数サイコロ) # These are the first 6 composite numbers greater than 1. composite_faces = [4, 6, 8, 9, 10, 12] # Initialize a counter for outcomes where the product of the faces equals K favorable_outcomes_count = 0 # Calculate the total number of possible outcomes when rolling both dice. # Each die has 6 faces, and the rolls are independent. # The total number of possible pairs (prime_face, composite_face) is 6 * 6 = 36. total_outcomes = len(prime_faces) * len(composite_faces) # This will be 36 # Iterate through each possible face value of the prime die for p_face in prime_faces: # For each prime face value, iterate through each possible face value of the composite die for c_face in composite_faces: # Check if the product of the current pair of face values equals the target K if p_face * c_face == k: # If the product matches K, increment the count of favorable outcomes favorable_outcomes_count += 1 # Calculate the probability. # Probability = (Number of favorable outcomes) / (Total number of outcomes) # Use float() conversion for total_outcomes to ensure floating-point division, # which is necessary for calculating the probability accurately. # Since total_outcomes is guaranteed to be 36 (non-zero), we don't need to check for division by zero. probability = favorable_outcomes_count / float(total_outcomes) # Print the calculated probability. # The problem requires the output to be accurate up to an absolute error of 10^-12. # Formatting the output to 17 decimal places using an f-string is a standard way # to ensure sufficient precision for competitive programming tasks. print(f"{probability:.17f}") # Standard Python entry point check. # This ensures that the solve() function is called only when the script is executed directly. if __name__ == '__main__': solve()