結果

問題 No.896 友達以上恋人未満
ユーザー gew1fw
提出日時 2025-06-12 13:47:25
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 1,735 bytes
コンパイル時間 221 ms
コンパイル使用メモリ 82,156 KB
実行使用メモリ 849,152 KB
最終ジャッジ日時 2025-06-12 13:47:42
合計ジャッジ時間 3,677 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 1 MLE * 1 -- * 5
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
from collections import defaultdict

def main():
    MOD = 0
    M, N, mulX, addX, mulY, addY, MOD = map(int, sys.stdin.readline().split())
    X = list(map(int, sys.stdin.readline().split()))
    Y = list(map(int, sys.stdin.readline().split()))
    A = list(map(int, sys.stdin.readline().split()))
    B = list(map(int, sys.stdin.readline().split()))

    x = [0] * (N + 1)
    y = [0] * (N + 1)
    a = [0] * (N + 1)
    b = [0] * (N + 1)

    for i in range(1, M + 1):
        x[i] = X[i-1]
        y[i] = Y[i-1]
        a[i] = A[i-1]
        b[i] = B[i-1]

    for i in range(M + 1, N + 1):
        x_prev = x[i-1]
        x[i] = (x_prev * mulX + addX) % MOD
        y_prev = y[i-1]
        y[i] = (y_prev * mulY + addY) % MOD
        a_prev = a[i-1]
        a_i = (a_prev * mulX + addX + MOD - 1) % MOD + 1
        a[i] = a_i
        b_prev = b[i-1]
        b_i = (b_prev * mulY + addY + MOD - 1) % MOD + 1
        b[i] = b_i

    count_x = defaultdict(int)
    for i in range(1, N + 1):
        xi = x[i]
        yi = y[i]
        count_x[xi] += yi

    z = [0] * (MOD + 1)
    for x_val, total in count_x.items():
        z[x_val] = total

    sum_d = [0] * (MOD + 1)
    for d in range(1, MOD + 1):
        multiple = d
        while multiple <= MOD:
            sum_d[d] += z[multiple]
            multiple += d

    ans = []
    xor_sum = 0
    for j in range(1, N + 1):
        aj = a[j]
        bj = b[j]
        ab = aj * bj
        if ab > MOD:
            current_ans = sum_d[aj]
        else:
            current_ans = sum_d[aj] - sum_d[ab]
        ans.append(current_ans)
        xor_sum ^= current_ans

    for j in range(M):
        print(ans[j])

    print(xor_sum)

if __name__ == "__main__":
    main()
0