結果
| 問題 | No.187 中華風 (Hard) |
| コンテスト | |
| ユーザー |
kenkoooo
|
| 提出日時 | 2015-04-20 09:49:49 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,222 bytes |
| 記録 | |
| コンパイル時間 | 2,129 ms |
| コンパイル使用メモリ | 76,696 KB |
| 実行使用メモリ | 43,808 KB |
| 最終ジャッジ日時 | 2024-07-04 17:26:24 |
| 合計ジャッジ時間 | 7,618 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 5 WA * 20 |
ソースコード
package yukicoder;
import java.util.Scanner;
public class Main {
private static final int MOD = 1000000007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] X = new int[N];
int[] Y = new int[N];
for (int i = 0; i < N; i++) {
X[i] = sc.nextInt();
Y[i] = sc.nextInt();
}
for (int i = 1; i < N; i++) {
int[] cmt = cmt(X[0], Y[0], X[i], Y[i]);
if (cmt[0] < 0) {
System.out.println(-1);
return;
}
X[0] = cmt[0];
Y[0] = cmt[1];
}
if (X[0] == 0) {
X[0] = Y[0];
}
System.out.println(X[0]);
}
static int[] extgcd(int a, int b, int[] is) {
if (a == 0) {
is[0] = 0;
is[1] = 1;
is[2] = b;
} else {
extgcd(b % a, a, is);
int x = is[1] - b / a * is[0];
is[1] = is[0];
is[0] = x;
}
return is;
}
static int[] cmt(int a1, int mo1, int a2, int mo2) {
int[] exgcd = extgcd(mo1, mo2, new int[3]);
int g = exgcd[2];
int x = exgcd[0];
a1 %= mo1;
a2 %= mo2;
if (a1 % exgcd[2] != a2 % exgcd[2]) {
return new int[] { -1, 0 };
}
int lcm = mo1 * (mo2 / g);
int v = a1 + ((a2 - a1) % lcm) * x % lcm * (mo1 / g);
return new int[] { ((v % lcm) + lcm) % lcm, lcm };
}
}
kenkoooo