結果
問題 | No.187 中華風 (Hard) |
ユーザー | imgry22 |
提出日時 | 2015-04-26 21:09:16 |
言語 | C++11 (gcc 11.4.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,091 bytes |
コンパイル時間 | 1,294 ms |
コンパイル使用メモリ | 164,044 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-05 02:51:24 |
合計ジャッジ時間 | 2,116 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
6,812 KB |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | AC | 2 ms
6,940 KB |
testcase_14 | AC | 2 ms
6,940 KB |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | AC | 2 ms
6,940 KB |
testcase_18 | AC | 2 ms
6,944 KB |
testcase_19 | AC | 2 ms
6,940 KB |
testcase_20 | WA | - |
testcase_21 | AC | 2 ms
6,940 KB |
testcase_22 | WA | - |
testcase_23 | AC | 1 ms
6,944 KB |
testcase_24 | AC | 1 ms
6,944 KB |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<pair<int, int> > vii; #define rrep(i, m, n) for(int (i)=(m); (i)<(n); (i)++) #define erep(i, m, n) for(int (i)=(m); (i)<=(n); (i)++) #define rep(i, n) for(int (i)=0; (i)<(n); (i)++) #define rrev(i, m, n) for(int (i)=(n)-1; (i)>=(m); (i)--) #define erev(i, m, n) for(int (i)=(n); (i)>=(m); (i)--) #define rev(i, n) for(int (i)=(n)-1; (i)>=0; (i)--) #define vrep(i, c) for(__typeof((c).begin())i=(c).begin(); i!=(c).end(); i++) #define ALL(v) (v).begin(), (v).end() #define mp make_pair #define pb push_back template<class T, class S> inline bool minup(T& m, S x){ return m>(T)x ? (m=(T)x, true) : false; } template<class T, class S> inline bool maxup(T& m, S x){ return m<(T)x ? (m=(T)x, true) : false; } const int INF = 1000000000; const ll MOD = 1000000007LL; const double EPS = 1E-12; template<typename T> T gcd(T a, T b) { T tmp; while(b){ tmp = a; a = b; b = tmp%b; } return a; } template<typename T> inline T lcm(T a, T b){ return a * (b / gcd(a, b)); } template<typename T> T extgcd(T a, T b, T& x, T& y) { T d = a; if(b != (T)0){ d = extgcd(b, a % b, y, x); y -= (a / b) * x; } else{ x = (T)1; y = (T)0; } return d; } template<typename T> T modInverse(T a, T m) { T x, y; extgcd(a, m, x, y); return (m + x % m) % m; } template<typename T> pair<T, T> linearCongruence(const vector<T>& A, const vector<T>& B, const vector<T>& M) { T x = (T)0; T m = (T)1; rep(i, A.size()){ T a = A[i] * m; T b = B[i] - A[i] * x; T d = gcd(M[i], a); if(b % d) return mp((T)-1, (T)-1); T t = b / d * modInverse(a / d, M[i] / d) % (M[i] / d); x = x + m * t; m *= M[i] / d; } return mp((x + m) % m, m); } int N; ll x, y; vector<ll> A, B, M; int main() { cin >> N; rep(i, N){ cin >> x >> y; A.pb(1LL); B.pb(x); M.pb(y); } cout << linearCongruence(A, B, M).first % MOD << endl; return 0; }