結果
| 問題 | No.3179 3 time mod |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-06-13 22:01:41 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,128 bytes |
| 記録 | |
| コンパイル時間 | 2,007 ms |
| コンパイル使用メモリ | 196,664 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-06-14 01:41:58 |
| 合計ジャッジ時間 | 3,123 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 42 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 1e9 + 7;
const int N = 200005;
const int INF = 0x3f3f3f3f;
__int128 extgcd(__int128 a, __int128 b, __int128 &x, __int128 &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
__int128 x1, y1;
__int128 g = extgcd(b, a % b, x1, y1);
x = y1;
y = x1 - (a / b) * y1;
return g;
}
__int128 modinv(__int128 a, __int128 m) {
__int128 x, y;
__int128 g = extgcd(a < 0 ? a + m : a, m, x, y);
if (g != 1) return -1;
x %= m;
if (x < 0) x += m;
return x;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n, p, q, r, a, b, c;
cin >> n >> p >> q >> r >> a >> b >> c;
__int128 inv = modinv(p % q, q), t = ((b - a) % q + q) % q * inv % q;
__int128 x1 = a + p * t, m12 = p * q;
__int128 inv2 = modinv(m12 % r, r), k = ((c - x1) % r + r) % r * inv2 % r;
__int128 x0 = x1 + m12 * k, M = m12 * r;
x0 %= M;
if (x0 < 0) x0 += M;
ll ans = 0;
if (x0 <= n) ans = (ll)(((__int128)n - x0) / M + 1);
cout << ans << "\n";
return 0;
}