結果
問題 | No.896 友達以上恋人未満 |
ユーザー | mkawa2 |
提出日時 | 2022-03-24 11:41:55 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,607 bytes |
コンパイル時間 | 2,099 ms |
コンパイル使用メモリ | 203,512 KB |
実行使用メモリ | 68,736 KB |
最終ジャッジ日時 | 2024-10-12 19:12:54 |
合計ジャッジ時間 | 8,095 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | RE | - |
testcase_06 | RE | - |
testcase_07 | RE | - |
testcase_08 | RE | - |
testcase_09 | RE | - |
testcase_10 | RE | - |
ソースコード
// #include <atcoder/all> // using namespace atcoder; #include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (n); i++) #define all(x) (x).begin(), (x).end() #define popcnt(x) __builtin_popcount(x) using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; using vi = vector<int>; using vll = vector<ll>; using vvi = vector<vector<int>>; using vvll = vector<vector<ll>>; const int inf = 1e9; const ll lim = 1e18; int dx[] = {1, 1, 0, -1, -1, -1, 0, 1}; int dy[] = {0, 1, 1, 1, 0, -1, -1, -1}; int main() { cin.tie(0); ios::sync_with_stdio(false); int m, n, mulx, addx, muly, addy, mod; cin >> m >> n >> mulx >> addx >> muly >> addy >> mod; vi xx(m), yy(m), aa(m), bb(m); rep(i, m) cin >> xx[i]; rep(i, m) cin >> yy[i]; rep(i, m) cin >> aa[i]; rep(i, m) cin >> bb[i]; int mask = mod - 1; vi zz(mod); rep(i, m) zz[xx[i]] += yy[i]; int x = xx[m - 1], y = yy[m - 1]; rep(i, n - m) { x = (x * mulx + addx) & mask; y = (y * muly + addy) & mask; zz[x] += y; } rep(i, mod) { if (i == 0) continue; for (int j = i + i; j < mod; j += i) zz[i] += zz[j]; } int s = 0; rep(i, m) { int ans; if (aa[i] * bb[i] < mod) ans = zz[aa[i]] - zz[aa[i] * bb[i]]; else ans = zz[aa[i]]; s ^= ans; cout << ans << endl; } int a = aa[m - 1], b = bb[m - 1]; rep(_, n - m) { a = ((a * mulx + addx + mod - 1) & mask) + 1; b = ((b * muly + addy + mod - 1) & mask) + 1; if (a * b < mod) s ^= zz[a] - zz[a * b]; else s ^= zz[a]; } cout << s << endl; return 0; }