結果
問題 | No.186 中華風 (Easy) |
ユーザー |
![]() |
提出日時 | 2015-04-19 23:35:25 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,200 bytes |
コンパイル時間 | 509 ms |
コンパイル使用メモリ | 62,048 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-19 18:22:28 |
合計ジャッジ時間 | 1,277 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
#include <iostream>#include <vector>using namespace std;inline long long mod(long long a, long long m) {return (a % m + m) % m;}long long inv(long long a, long long m) {long long b = m, u = 1, v = 0;while (b) {long long t = a/b;a -= t*b; swap(a, b);u -= t*v; swap(u, v);}return mod(u, m);}long long gcd(long long a, long long b) {if (b == 0) return a;else return gcd(b, a % b);}pair<long long, long long> ChineseRem(vector<long long> vb, vector<long long> vm) {long long x = 0, m = 1, a, b, d;for (int i = 0; i < vb.size(); ++i) {a = m, b = vb[i] - x, d = gcd(vm[i], a);if (b % d != 0) return make_pair(0, -1);long long t = mod(b/d * inv(a/d, vm[i]/d), vm[i]/d);x += m * t;m *= vm[i]/d;}return make_pair(x % m, m);}int main() {vector<long long> vb(3), vm(3);for (int i = 0; i < 3; ++i) {cin >> vb[i] >> vm[i];}pair<long long, long long> res = ChineseRem(vb, vm);if (res.second == -1) cout << -1 << endl;else {if (res.first == 0) cout << res.second << endl;else cout << res.first << endl;}}