結果
問題 | No.186 中華風 (Easy) |
ユーザー | mikit |
提出日時 | 2019-04-15 11:32:13 |
言語 | Java21 (openjdk 21) |
結果 |
WA
|
実行時間 | - |
コード長 | 8,050 bytes |
コンパイル時間 | 2,597 ms |
コンパイル使用メモリ | 85,564 KB |
実行使用メモリ | 53,620 KB |
最終ジャッジ日時 | 2024-09-22 07:49:15 |
合計ジャッジ時間 | 4,867 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 100 ms
53,620 KB |
testcase_01 | AC | 55 ms
50,460 KB |
testcase_02 | AC | 56 ms
50,552 KB |
testcase_03 | AC | 55 ms
50,684 KB |
testcase_04 | AC | 56 ms
50,536 KB |
testcase_05 | AC | 55 ms
50,788 KB |
testcase_06 | AC | 55 ms
50,176 KB |
testcase_07 | AC | 56 ms
50,400 KB |
testcase_08 | AC | 55 ms
50,616 KB |
testcase_09 | AC | 55 ms
50,208 KB |
testcase_10 | AC | 101 ms
53,432 KB |
testcase_11 | AC | 55 ms
50,568 KB |
testcase_12 | AC | 55 ms
50,576 KB |
testcase_13 | AC | 55 ms
50,268 KB |
testcase_14 | AC | 55 ms
50,196 KB |
testcase_15 | AC | 55 ms
50,716 KB |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | AC | 55 ms
50,596 KB |
testcase_19 | AC | 99 ms
53,508 KB |
testcase_20 | AC | 99 ms
53,192 KB |
testcase_21 | AC | 98 ms
53,016 KB |
testcase_22 | AC | 101 ms
53,348 KB |
ソースコード
import java.io.OutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.UncheckedIOException; import java.util.Objects; import java.nio.charset.Charset; import java.util.StringTokenizer; import java.io.Writer; import java.io.OutputStreamWriter; import java.io.BufferedReader; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top * * @author mikit */ public class Main { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; LightScanner in = new LightScanner(inputStream); LightWriter out = new LightWriter(outputStream); YC186 solver = new YC186(); solver.solve(1, in, out); out.close(); } static class YC186 { public void solve(int testNumber, LightScanner in, LightWriter out) { // out.setBoolLabel(LightWriter.BoolLabel.YES_NO_FIRST_UP); LongChineseRemainder cr = new LongChineseRemainder(); try { for (int i = 0; i < 3; i++) { long x = in.longs(), y = in.longs(); cr.grow(x, y); } out.ansln(cr.getB1()); } catch (IllegalStateException ex) { out.ansln(-1); } } } static class Vec3i implements Comparable<Vec3i> { public int x; public int y; public int z; public Vec3i(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Vec3i vec3i = (Vec3i) o; return x == vec3i.x && y == vec3i.y && z == vec3i.z; } public int hashCode() { return Objects.hash(x, y, z); } public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } public int compareTo(Vec3i o) { if (x == o.x) { if (y == o.y) { return Integer.compare(z, o.z); } return Integer.compare(y, o.z); } return Integer.compare(x, o.x); } } static class Vec3l implements Comparable<Vec3l> { public long x; public long y; public long z; public Vec3l(long x, long y, long z) { this.x = x; this.y = y; this.z = z; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Vec3i vec3i = (Vec3i) o; return x == vec3i.x && y == vec3i.y && z == vec3i.z; } public int hashCode() { return Objects.hash(x, y, z); } public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } public int compareTo(Vec3l o) { if (x == o.x) { if (y == o.y) { return Long.compare(z, o.z); } return Long.compare(y, o.z); } return Long.compare(x, o.x); } } static class LongChineseRemainder { private long b1 = 0; private long m1 = 1; public void grow(long b2, long m2) { Vec3l sol = LongEuclidSolver.solve(m1, m2); long p = sol.x, d = sol.z; if ((b2 - b1) % d != 0) { throw new IllegalStateException("Given x % " + m2 + " = " + b2 + " and x % " + m1 + " = " + b1 + ", gcd was " + sol.z); } long m = m1 * (m2 / d); long tmp = (b2 - b1) / d * p % (m2 / d); long r = (b1 + m1 * tmp) % m; if (r < 0) { r += m; r %= m; } b1 = r; m1 = m; } public long getB1() { return b1; } } static class LightWriter implements AutoCloseable { private final Writer out; private boolean autoflush = false; private boolean breaked = true; public LightWriter(Writer out) { this.out = out; } public LightWriter(OutputStream out) { this(new BufferedWriter(new OutputStreamWriter(out, Charset.defaultCharset()))); } public LightWriter print(char c) { try { out.write(c); breaked = false; } catch (IOException ex) { throw new UncheckedIOException(ex); } return this; } public LightWriter print(String s) { try { out.write(s, 0, s.length()); breaked = false; } catch (IOException ex) { throw new UncheckedIOException(ex); } return this; } public LightWriter ans(String s) { if (!breaked) { print(' '); } return print(s); } public LightWriter ans(long l) { return ans(Long.toString(l)); } public LightWriter ans(int i) { return ans(Integer.toString(i)); } public LightWriter ansln(int... n) { for (int n1 : n) { ans(n1).ln(); } return this; } public LightWriter ansln(long... n) { for (long n1 : n) { ans(n1).ln(); } return this; } public LightWriter ln() { print(System.lineSeparator()); breaked = true; if (autoflush) { try { out.flush(); } catch (IOException ex) { throw new UncheckedIOException(ex); } } return this; } public void close() { try { out.close(); } catch (IOException ex) { throw new UncheckedIOException(ex); } } } static class LongEuclidSolver { private LongEuclidSolver() { } public static Vec3l solve(long a, long b) { LongEuclidSolver.ReferenceLong p = new LongEuclidSolver.ReferenceLong(), q = new LongEuclidSolver.ReferenceLong(); long d = solve(a, b, p, q); return new Vec3l(p.val, q.val, d); } private static long solve(long a, long b, LongEuclidSolver.ReferenceLong p, LongEuclidSolver.ReferenceLong q) { if (b == 0) { p.val = 1; q.val = 0; return a; } else { long d = solve(b, a % b, q, p); q.val -= (a / b) * p.val; return d; } } private static class ReferenceLong { private long val; } } static class LightScanner { private BufferedReader reader = null; private StringTokenizer tokenizer = null; public LightScanner(InputStream in) { reader = new BufferedReader(new InputStreamReader(in)); } public String string() { if (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new UncheckedIOException(e); } } return tokenizer.nextToken(); } public long longs() { return Long.parseLong(string()); } } }