結果
| 問題 |
No.856 増える演算
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 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()
gew1fw