結果
問題 |
No.856 増える演算
|
ユーザー |
![]() |
提出日時 | 2025-06-12 19:30:35 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,097 bytes |
コンパイル時間 | 190 ms |
コンパイル使用メモリ | 82,324 KB |
実行使用メモリ | 83,276 KB |
最終ジャッジ日時 | 2025-06-12 19:31:14 |
合計ジャッジ時間 | 32,868 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 WA * 13 TLE * 2 -- * 29 |
ソースコード
MOD = 10**9 + 7 def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) A = list(map(int, data[1:N+1])) A_sorted = sorted(A) min_A = A_sorted[0] count_min = A_sorted.count(min_A) if count_min >= 2: min_T = (2 * min_A) * pow(min_A, min_A, MOD) min_T %= MOD else: s_min = A_sorted[1] min_T = (min_A + s_min) * pow(min_A, s_min, MOD) min_T %= MOD prefix_sum = [0] * (N + 1) for i in range(N): prefix_sum[i+1] = prefix_sum[i] + A[i] total_sum = prefix_sum[N] P2 = 1 for i in range(N): S_i = total_sum - prefix_sum[i+1] exponent = S_i % (MOD-1) term = pow(A[i], exponent, MOD) P2 = (P2 * term) % MOD P1 = 1 for i in range(N): for j in range(i + 1, N): term = (A[i] + A[j]) % MOD P1 = (P1 * term) % MOD P = (P1 * P2) % MOD inv_min_T = pow(min_T, MOD-2, MOD) M = (P * inv_min_T) % MOD print(M) if __name__ == "__main__": main()