結果
問題 | No.186 中華風 (Easy) |
ユーザー | Dispersion-atc |
提出日時 | 2024-12-12 13:46:10 |
言語 | C++23 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,063 bytes |
コンパイル時間 | 3,196 ms |
コンパイル使用メモリ | 247,904 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-12 13:46:14 |
合計ジャッジ時間 | 4,176 ms |
ジャッジサーバーID (参考情報) |
judge4 / 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 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 1 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 2 ms
5,248 KB |
testcase_09 | AC | 2 ms
5,248 KB |
testcase_10 | AC | 2 ms
5,248 KB |
testcase_11 | AC | 1 ms
5,248 KB |
testcase_12 | AC | 2 ms
5,248 KB |
testcase_13 | AC | 2 ms
5,248 KB |
testcase_14 | AC | 2 ms
5,248 KB |
testcase_15 | AC | 1 ms
5,248 KB |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | AC | 2 ms
5,248 KB |
testcase_19 | AC | 2 ms
5,248 KB |
testcase_20 | AC | 2 ms
5,248 KB |
testcase_21 | AC | 2 ms
5,248 KB |
testcase_22 | AC | 1 ms
5,248 KB |
ソースコード
// #include "../../merge_src_docs/template/24_template.hpp" #include <bits/stdc++.h> using namespace std; using ll = long long; #define rep(i, n) for(ll i = 0; i < n; i++) #define rep2(i, l, r) for(ll i = l; i < r; i++) using vi = vector<int>; using vvi = vector<vi>; using vll = vector<ll>; #define all(A) A.begin(), A.end() #define elif else if using pii = pair<ll, ll>; bool chmin(auto &a, auto b) { return a > b ? a = b, 1 : 0; } bool chmax(auto &a, auto b) { return a < b ? a = b, 1 : 0; } struct IOSetup { IOSetup() { cin.tie(0); ios::sync_with_stdio(0); } } iosetup; template<class T> void print(vector<T> a) { for(auto x : a) cout << x << ' '; cout << endl; } void print(auto x) { cout << x << endl; } template<class Head, class... Tail> void print(Head &&head, Tail &&...tail) { cout << head << ' '; print(forward<Tail>(tail)...); } //#include "../../merge_src_docs/math/crt.hpp" /* - `extgcd(ll a, ll b, ll &x, ll &y)` : `ax + by = gcd(a, b)` を満たす `x, y` を格納する. `|x| + |y|` は最小化されるらしい - `pair<ll, ll> crt(vll &r, vll &m)` : `x = r[i] (mod m[i])` を解く. 解が存在しないなら `{-1, -1}`, 存在するなら `{x, lcm(m[1], m[2], ...)}` を返す. */ ll extgcd(ll a, ll b, ll &x, ll &y) { // assert(a >= 0 && b >= 0); if(!b) return x = 1, y = 0, a; ll d = extgcd(b, a % b, y, x); y -= a / b * x; return d; } ll inv_mod(ll x, ll m) { ll y, z; extgcd(x, m, y, z); return (y % m + m) % m; } pair<ll, ll> crt(vll r, vll m) { int n = r.size(); ll r0 = 0, m0 = 1; rep(i, n) { ll g, im, x; g = extgcd(m0, m[i], im, x); if((r[i] - r0) % g) return {-1, -1}; ll tmp = (r[i] - r0) / g * im % (m[i] / g); r0 += m0 * tmp; m0 *= m[i] / g; } return {(r0 % m0 + m0) % m0, m0}; } // https://yukicoder.me/problems/447 void solve1() { vector<ll> X(3), Y(3); rep(i, 3) { ll x, y; cin >> x >> y; X[i] = x, Y[i] = y; } auto [r, m] = crt(X, Y); cout << r << '\n'; return; } int main() { solve1(); return 0; }