/////
Search

N-Parasitic Numbers Ending in N

๋‚ ์งœ
2022/02/19
์†์„ฑ
์ฝ”๋“œ์›Œ์ฆˆ

Parasitic Number(๊ธฐ์ƒ์ˆ˜)๋ž€?

๊ธฐ์ƒ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ณต์‹

Solution

๊ธฐ์ƒ์ˆ˜ ์ž์ฒด์™€ ๊ณต์‹์„ ์ดํ•ดํ•˜๋Š” ๋ฐ๋งŒ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ธ๋‹ค. ์ผ๋‹จ์€ 10์ง„๋ฒ•๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ๋Œ€๋žต 20์ž๋ฆฌ๋ถ€ํ„ฐ๋Š” ์ž˜๋ฆฌ๊ณ , ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ์œผ๋กœ ์ •์ˆ˜๋ถ€๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด exponential ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‚˜์˜ค๋ฏ€๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ๊ฐ„์„ ์ œ๋Œ€๋กœ ๊ตฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๋”ฐ๋ผ์„œ ์ง์ ‘ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 8, 16์ง„๋ฒ•์€ ์–ด์ผ€ ํ•˜๋ƒฅ... ใ…  ๋‚ด์ผ ๋” ํ’€์–ด์•ผ์ง€
// n = ๋ถ„์ž, dn = ๋ถ„๋ชจ function bigDivide(n, dn) { let curr=n, decimalStr='', period=0, remainder; while(period++ <= 1000) { if (dn > curr) { decimalStr += 0 } else { decimalStr += parseInt(curr/dn) curr = remainder = curr%dn } curr *= 10 if (remainder === n) break } return decimalStr.slice(1) // ์ •์ˆ˜๋ถ€ ์ œ์™ธ } // 8, 10, 16์ง„๋ฒ• ์ง€์›ํ•ด์•ผํ•จ // find parasitic number ending in n function calculateSpecial(n, base) { return bigDivide(n, 10*n - 1) }
JavaScript
๋ณต์‚ฌ

test code

describe("Tests", () => { it("test", () => { Test.assertEquals(calculateSpecial(4, 10), '102564'); Test.assertEquals(calculateSpecial(3, 10), '1034482758620689655172413793'); Test.assertEquals(calculateSpecial(2, 10), '105263157894736842'); Test.assertEquals(calculateSpecial(1, 10), '1'); }); });
JavaScript
๋ณต์‚ฌ