PS

[๋ฐฑ์ค€] 18291 ๋น„์š”๋œจ์˜ ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ with Python

ํ˜•์ค€_It's 2022. 5. 20. 20:25
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 18291 ๋น„์š”๋œจ์˜ ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ

๐Ÿ’ก ์กฐ๊ฑด

  1. ์ง•๊ฒ€๋‹ค๋ฆฌ๋Š” ๋น„์š”๋œจ๊ฐ€ ์žˆ๋Š” ๋ฐฉํ–ฅ์—์„œ๋ถ€ํ„ฐ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ๊นŒ์ง€ ์ฐจ๋ก€๋กœ 1๋ฒˆ, 2๋ฒˆ, ..., N๋ฒˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  1. ๋น„์š”๋œจ๋Š” 1๋ฒˆ ์ง•๊ฒ€๋‹ค๋ฆฌ ์œ„์— ์˜ฌ๋ผ๊ฐ”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉฐ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๊ณ  ํ•œ๋‹ค.
    1. 1 โ‰ค X โ‰ค N ์ธ ์ž„์˜์˜ ์ •์ˆ˜ X์— ๋Œ€ํ•ด, ํ˜„์žฌ ์žˆ๋Š” ์ง•๊ฒ€๋‹ค๋ฆฌ์˜ ๋ฒˆํ˜ธ๋ฅผ i๋ฒˆ์ด๋ผ๊ณ  ํ•  ๋•Œ i+X๋ฒˆ ์ง•๊ฒ€๋‹ค๋ฆฌ๋กœ ๋›ธ ์ˆ˜ ์žˆ๋‹ค.
    2. N๋ฒˆ์งธ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜์ณ์„  ์•ˆ ๋˜๊ณ , ์ •ํ™•ํžˆ ๋„์ฐฉํ•ด์•ผ ํ•œ๋‹ค
  1. ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค T โ‰ค 1000)
  1. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ง•๊ฒ€๋‹ค๋ฆฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 109)
  1. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด, ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๊ทœ์น™์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ง•๊ฒ€๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 109+7๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  1. ์ˆ˜ํ•™ ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

from sys import stdin


def solve(x):
    mod = 1000000007
    a = 2
    b = x
    ret = 1
    while b:
        if b % 2 == 1:
            ret *= a
            ret %= mod

        a *= a
        a %= mod
        b //= 2

    return ret


for _ in range(int(stdin.readline())):
    test_data = int(stdin.readline())
    if 0 < test_data < 2:
        print(1)

    else:
        x = test_data - 2
        print(solve(x))

๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

์˜ˆ์ œ

1
4

์‹คํ–‰๊ฒฐ๊ณผ

4

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. ๋ถ„ํ• ์ •๋ณต์„ ํ†ตํ•œ ๊ฑฐ๋“ญ์ œ๊ณฑ ๋ฌธ์ œ์ด๋‹ค. ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  1. pow ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.
๋ฐ˜์‘ํ˜•