省略
省略
C++に変換後のコードはこちら
int N, M, mulX, addX, mulY, addY, MOD;
int X[1000], Y[1000], A[1000], B[1000];
ll z[16777216];
int ps, p[1077871];
ll res[1000], res2;
{
ull x, y, a, b, mm;
rd(M,N,mulX,addX,mulY,addY,MOD);
rd(X(M),Y(M),A(M),B(M));
ps = Prime(MOD, p);
rep(i,M) z[X[i]] += Y[i];
x = X[M-1];
y = Y[M-1];
mm = MOD - 1;
REP(i,M,N){
x = (x * mulX + addX) & mm;
y = (y * mulY + addY) & mm;
z[x] += y;
}
rep(k,ps) for(i=(MOD-1)/p[k]; i; i--) z[i] += z[i * p[k]];
rep(i,M) res2 ^= res[i] = z[A[i]] if[(ll)A[i]*B[i] < MOD, - z[A[i]*B[i]]];
a = A[M-1];
b = B[M-1];
rep(i,M,N){
a = ((a * mulX + addX + mm) & mm) + 1;
b = ((b * mulY + addY + mm) & mm) + 1;
res2 ^= z[a] if[a*b < MOD, -z[a*b]];
}
wtLn(res(M), res2);
}
Current time: 2024年04月25日21時19分34秒
Last modified: 2019年09月28日09時44分41秒 (by laycrs)
Tags: Competitive_Programming_Incomplete yukicoder
トップページに戻る
Logged in as: unknown user (not login)