結果
| 問題 |
No.896 友達以上恋人未満
|
| コンテスト | |
| ユーザー |
hitonanode
|
| 提出日時 | 2019-09-28 13:17:23 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,885 bytes |
| コンパイル時間 | 1,685 ms |
| コンパイル使用メモリ | 170,824 KB |
| 実行使用メモリ | 81,800 KB |
| 最終ジャッジ日時 | 2024-10-02 00:43:14 |
| 合計ジャッジ時間 | 15,143 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 4 |
| other | WA * 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;
using T = lint;
void integer_zeta(array<lint, 1 << 24> &f)
{
int N = f.size() - 1;
for (int i = 1; i <= N; i++)
{
for (int j = i * 2; j <= N; j += i)
{
f[i] += f[j];
}
}
}
int main()
{
array<lint, 1 << 24> uc;
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;
}
}
integer_zeta(uc);
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