結果
| 問題 |
No.896 友達以上恋人未満
|
| コンテスト | |
| ユーザー |
hitonanode
|
| 提出日時 | 2019-09-27 23:20:58 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2,335 ms / 3,500 ms |
| コード長 | 1,734 bytes |
| コンパイル時間 | 1,608 ms |
| コンパイル使用メモリ | 172,032 KB |
| 実行使用メモリ | 81,920 KB |
| 最終ジャッジ日時 | 2024-09-25 02:00:51 |
| 合計ジャッジ時間 | 16,010 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 7 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using lint = long long int;
struct fast_ios { fast_ios(){ cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(20); }; } fast_ios_;
#define FOR(i, begin, end) for(int i=(begin),i##_end_=(end);i<i##_end_;i++)
#define IFOR(i, begin, end) for(int i=(end)-1,i##_begin_=(begin);i>=i##_begin_;i--)
#define REP(i, n) FOR(i,0,n)
#define IREP(i, n) IFOR(i,0,n)
template<typename T> istream &operator>>(istream &is, vector<T> &vec){ for (auto &v : vec) is >> v; return is; }
#define dbg(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ") " << __FILE__ << endl;
lint M, N, mx, ax, my, ay, MOD;
lint uc[1 << 24];
int main()
{
cin >> M >> N >> mx >> ax >> my >> ay >> MOD;
vector<lint> X(M), Y(M), A(M), B(M);
cin >> X >> Y >> A >> B;
{
REP(i, M)
{
uc[X[i]] += Y[i];
}
lint x = X.back(), y = Y.back();
FOR(i, M, N)
{
x = (x * mx + ax) % MOD;
y = (y * my + ay) % MOD;
uc[x] += y;
}
}
FOR(i, 1, (1 << 24) + 1)
{
for (int j = i * 2; j < 1 << 24; j += i) uc[i] += uc[j];
}
lint retxor = 0;
REP(i, M)
{
if (A[i] >= 1 << 24) continue;
lint ret = uc[A[i]];
if (A[i] * B[i] < 1LL << 24) ret -= uc[A[i] * B[i]];
printf("%lld\n", ret);
retxor ^= ret;
}
lint a = A.back(), b = B.back();
FOR(i, M, N)
{
a = (a * mx + ax + MOD - 1) % MOD + 1;
b = (b * my + ay + MOD - 1) % MOD + 1;
if (a >= 1LL << 24) continue;
lint ret = uc[a];
if (a * b < 1LL << 24) ret -= uc[a * b];
retxor ^= ret;
}
printf("%lld\n", retxor);
}
hitonanode