結果
問題 |
No.3179 3 time mod
|
ユーザー |
![]() |
提出日時 | 2025-05-30 18:36:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 846 bytes |
コンパイル時間 | 917 ms |
コンパイル使用メモリ | 68,952 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-05-30 20:10:38 |
合計ジャッジ時間 | 3,945 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 29 WA * 12 |
ソースコード
#include <iostream> using ll = long long; using namespace std; pair<ll, ll> func(ll a, ll b, ll c) { if (b == 0) { return { c / a,0 }; } else { pair<ll, ll>tmp; tmp = func(b, a % b, c); return{ tmp.second,tmp.first - (a / b) * tmp.second }; } } int main() { ll N; cin >> N; ll P, Q, R; cin >> P >> Q >> R; ll A, B, C; cin >> A >> B >> C; pair<ll, ll> tmp; tmp = func(P, Q, 1); ll good0 = ((__int128_t)A * (__int128_t)Q * (__int128_t)tmp.second + (__int128_t)B * (__int128_t)P * (__int128_t)tmp.first) % (__int128_t)(P * Q); tmp = func(P * Q, R, 1); ll good = ((__int128_t)good0 * R * (__int128_t)tmp.second + (__int128_t)C * (__int128_t)P * (__int128_t)Q * (__int128_t)tmp.first) % (__int128_t)(P * Q * R); if(N % (P * Q * R) < good){ cout << N / (P * Q * R); } else{ cout << N / (P * Q * R) + 1; } return 0; }