結果
| 問題 |
No.2709 1975 Powers
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-04-07 06:51:27 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 560 ms / 2,000 ms |
| コード長 | 1,014 bytes |
| コンパイル時間 | 246 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 213,412 KB |
| 最終ジャッジ日時 | 2024-10-01 04:22:56 |
| 合計ジャッジ時間 | 9,122 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 25 |
ソースコード
import typing
import sys
# sys.setrecursionlimit(100100)
# from collections import defaultdict
input = lambda: sys.stdin.readline().strip()
inf = 10**18
mod = 998244353
# import heapq
def solve():
N, P, Q = map(int, input().split())
A = list(map(int,input().split()))
A.sort()
#
lft = [0 for _ in range(P)]
rht = [0 for _ in range(P)]
# 最初 b = 2から
lft[(pow(10, A[0], P)+pow(9, A[1], P))%P] = 1
# このとき c=3以降
for c in range(2, N):
for d in range(c+1, N):
rht[(pow(7, A[c], P)+pow(5, A[d], P))%P] += 1
ans = 0
for p in range(P):
ans += lft[p]*rht[(Q-p)%P]
for b in range(2, N-2):
# b終わりを追加
lft = [0 for _ in range(P)]
for a in range(b):
lft[(pow(10, A[a], P)+pow(9, A[b], P))%P] += 1
# bはじまりを削除
for d in range(b+1, N):
rht[(pow(7, A[b], P)+pow(5, A[d], P))%P] -= 1
for p in range(P):
ans += lft[p]*rht[(Q-p)%P]
print(ans)
def main():
t = 1
for _ in range(t):
solve()
main()