結果
問題 | No.186 中華風 (Easy) |
ユーザー | t33f |
提出日時 | 2018-11-24 15:56:24 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,082 bytes |
コンパイル時間 | 436 ms |
コンパイル使用メモリ | 54,492 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-19 18:32:57 |
合計ジャッジ時間 | 1,111 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 1 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 1 ms
5,376 KB |
testcase_06 | AC | 1 ms
5,376 KB |
testcase_07 | AC | 1 ms
5,376 KB |
testcase_08 | AC | 1 ms
5,376 KB |
testcase_09 | AC | 1 ms
5,376 KB |
testcase_10 | AC | 2 ms
5,376 KB |
testcase_11 | AC | 1 ms
5,376 KB |
testcase_12 | AC | 1 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 1 ms
5,376 KB |
testcase_16 | AC | 1 ms
5,376 KB |
testcase_17 | AC | 2 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 1 ms
5,376 KB |
testcase_20 | AC | 2 ms
5,376 KB |
testcase_21 | AC | 1 ms
5,376 KB |
testcase_22 | AC | 1 ms
5,376 KB |
ソースコード
#include <iostream> using namespace std; long long modinv(long long a, long long m) { long long x = m, y = a, p = 1, q = 0, r = 0, s = 1; while (y != 0) { long long u = x / y; long long x0 = y; y = x - y * u; x = x0; long long r0 = p - r * u, s0 = q - s * u; p = r; r = r0; q = s; s = s0; } return q < 0 ? q + m : q; } long long CRT(long long a, long long x, int b, int y) { long long g = a, h = b; while (h > 0) { long long t = g; g = h; h = t % h; } if ((y - x) % g != 0) return -1; long long t = (y - x) / g % b * modinv(a/g, b/g) % b; long long ans = (x + a * t) % (a/g*b); if (ans < 0) ans += a/g*b; return ans; } long long lcm(long long a, long long b) { long long x = a, y = b; while (y > 0) { long long z = x; x = y; y = z % y; } return a / x * b; } int main() { int a, x, b, y, c, z; cin >> x >> a >> y >> b >> z >> c; long long ans = CRT(a, x, b, y); if (ans >= 0) ans = CRT(lcm(a, b), ans, c, z); if (ans == 0) ans = lcm(a, lcm(b, c)); cout << ans << endl; }