結果
問題 |
No.3024 全単射的
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:30:23 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,398 bytes |
コンパイル時間 | 251 ms |
コンパイル使用メモリ | 82,076 KB |
実行使用メモリ | 88,616 KB |
最終ジャッジ日時 | 2025-06-12 21:30:52 |
合計ジャッジ時間 | 4,247 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | RE * 22 |
ソースコード
import sys from fractions import Fraction def compute(numbers): if len(numbers) == 1: return {numbers[0]} results = set() for i in range(1, len(numbers)): left = numbers[:i] right = numbers[i:] left_results = compute(left) right_results = compute(right) for l in left_results: for r in right_results: # 加法 results.add(l + r) # 减法 results.add(l - r) results.add(r - l) # 乘法 results.add(l * r) # 除法 if r != 0: results.add(l / r) if l != 0: results.add(r / l) return results def main(): n = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().split())) # 将数转换为分数 A = [Fraction(x) for x in A] for k in range(1, n): # 左边的数是前k个 left = A[:k] # 右边的数是后n-k个 right = A[k:] # 计算左边的所有可能结果 left_results = compute(left) # 计算右边的所有可能结果 right_results = compute(right) # 检查是否有交集 if left_results & right_results: print("YES") return print("NO") if __name__ == "__main__": main()