[๋ฐฑ์ค-2502] ๋ก ๋จน๋ ํธ๋์ด | node.js | silver1
๋ฌธ์
https://www.acmicpc.net/problem/2502
2502๋ฒ: ๋ก ๋จน๋ ํธ๋์ด
์ฒซ์ค์ ์ฒซ ๋ ์ ์ค ๋ก์ ๊ฐ์ A๋ฅผ ์ถ๋ ฅํ๊ณ ๊ทธ ๋ค์ ๋์งธ ์ค์๋ ๋์งธ ๋ ์ ์ค ๋ก์ ๊ฐ์ B๋ฅผ ์ถ๋ ฅํ๋ค. ์ด ๋ฌธ์ ์์ ์ฃผ์ด์ง D, K์ ๋ํด์๋ ํญ์ ์ ์ A, B (1≤ A ≤ B)๊ฐ ์กด์ฌํ๋ค.
www.acmicpc.net
ํ์ด
function solve() {
const aDp = [1, 0];
const bDp = [0, 1];
for (let i = 2; i < d; i++) {
aDp[i] = aDp[i - 1] + aDp[i - 2];
bDp[i] = bDp[i - 1] + bDp[i - 2];
}
const aCoef = aDp[d - 1];
const bCoef = bDp[d - 1];
for (let i = 1; i <= k; i++) {
const remain = k - aCoef * i;
if (remain % bCoef === 0) {
console.log(`${i}\n${remain / bCoef}`);
break;
}
}
}
const filePath =
process.platform === "linux" ? "/dev/stdin" : "๋ฐฑ์ค/silver/2502/testcase.txt";
const input = require("fs")
.readFileSync(filePath)
.toString()
.trim()
.split("\n");
let [d, k] = input[0].split(" ").map((el) => +el);
solve();
์ด ๋ฌธ์ ๋ ๊ทธ๋ฅ ์ํ์์ด๋ค.
์ฒ์ ๋ ๊ฐ์ด A, B๋๊น ๋๋ฒ์งธ ๊ฐ์ A+B, ์ธ๋ฒ์งธ ๊ฐ์ B+A+B => A+2B, ๋ค๋ฒ์งธ ๊ฐ์ 2A+3B, ๋ค์ฏ๋ฒ์งธ ๊ฐ์ 3A+5B •••
์ด ๋ก์ง์ dp๋ฅผ ์ด์ฉํด์ ๊ตฌํ๋ฉด ๋ง์ง๋ง D๋ฒ์งธ์ ์ค๋ ์ซ์๋ค์ด ๊ฐ๊ฐ A์ B์ ๊ณ์๊ฐ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ ์ฌ๊ธฐ์๋ถํฐ A๊ฐ์ 1๋ถํฐ ์ญ ๋์ ํด๋ณด๋ฉด์ B๊ฐ์ด ์ฌ๋ฐ๋ฅธ ์ ์๋ก ๋์ฌ ๊ฒฝ์ฐ ๋ต์ ์ถ๋ ฅํ๊ณ break๋ก ์ข ๋ฃํ๋ฉด ๋!