function calcCRT(B0, C0, B1, C1) { C0 = (C0 >= 0 ? C0 % B0 : (B0 - (- C0) % B0) % B0); C1 = (C1 >= 0 ? C1 % B1 : (B1 - (- C1) % B1) % B1); let product = B0 * B1; for (let n = 0; n < product; n++) { if (n % B0 == C0 && n % B1 == C1) { return n.toString; } } return "NaN"; } function Main(input) { let src = input.replace("\n", " ").split(" "); let B0 = parseInt(src[0]); let C0 = parseInt(src[1]); let B1 = parseInt(src[2]); let C1 = parseInt(src[3]); console.log(calcCRT(B0, C0, B1, C1)); } Main(require("fs").readFileSync("/dev/stdin", "utf8")); // ※数学的アルゴリズムは理解出来ないので、解説の模範解答を移植のみ