๋ฌธ์
https://softeer.ai/practice/6284
๋ฌธ์ ํ์ด
์ค๋ต ์ฝ๋
import sys
input = sys.stdin.readline
k, p, n = map(int, input().split())
answer = k
for i in range(n):
answer = answer * p
print(answer % 1000000007)
์ฒซ ์ฝ๋๋ ๋ฌธ์ ์์ ๋ช ์ํ ๊ฒ์ฒ๋ผ ์ต์ข ๋ฐ์ด๋ฌ์ค ๊ฐ์๋ฅผ 1000000007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ์๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ์ฝ ์กฐ๊ฑด์ N์ด์ ์ต๋๊ฐ 10^6์ด์๊ณ ๋์ ์๊ณ ๋ฆฌ์ฆ ์๊ฐ๋ณต์ก๋๋ O(n)์ด์๊ธฐ ๋๋ฌธ์ ์ ์๊ฐ์ด๊ณผ๊ฐ ๋จ๋์ง ์ดํด๊ฐ ๋์ง ์์ ์ฐพ์๋ณด์์ต๋๋ค.
์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ์ด์
์ค๋ฒํ๋ก์ฐ ๋ฐ์
* ์ค๋ฒํ๋ก์ฐ: ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅํ ์ ์๋ ๊ฐ์ ๋ฒ์๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ
์ ์ํ ๋ณ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ๋ ๋นํธ ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 32๋นํธ ์ ์ํ ๋ณ์๋ -2,147,483,648๋ถํฐ 2,147,483,647๊น์ง์ ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ด ๋ฒ์๋ฅผ ์ด๊ณผํ๋ ๊ฐ์ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ์ค๋ต ์ฝ๋๋ K์ ์ต๋๊ฐ์ด 10^8์ด๊ณ P์ ์ต๋๊ฐ์ด 10^8์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ด 100๋ง๋ฒ ์ํ๋๋ฉด์ answer์ ๊ฐ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ ธ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ต์ข ์ ๋ต ์ฝ๋
๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ฑ์ง ๋๋ถ์ ์ค๋ต ์ฝ๋์ ์ ๋ต ์ฝ๋์ ์ต์ข ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค.
์ ๋ต ์ฝ๋๋ ๊ฐ ๋จ๊ณ๋ง๋ค ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ํํ์ฌ answer์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ์ ์งํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์๊ฐ ํจ์จ์ฑ์ด ๋ ๋์ต๋๋ค.
import sys
input = sys.stdin.readline
k, p, n = map(int, input().split())
answer = k
for i in range(n):
answer = (answer * p) % 1000000007
print(answer)
์ค๋ต ์ฝ๋์ ์ ๋ต ์ฝ๋์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ์ด์
๋ชจ๋๋ฌ ์ฐ์ฐ์ ํน์ฑ ๋๋ฌธ์, ์ฒซ ๋ฒ์งธ ์ฝ๋์ ๋ ๋ฒ์งธ ์ฝ๋์ ๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค.
์ด๋ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ๊ธฐ๋ณธ ์ฑ์ง์ ์ํ ๊ฒ์
๋๋ค. ์ด ์ฑ์ง์ ํตํด ๋ฐ๋ณต์ ์ผ๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํด๋ ์ต์ข
๊ฒฐ๊ณผ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค.
์ด๋ ์ํ์ ์ธ ๊ณต๋ถ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ตฌ๊ธ๋ง ๋ฑ์ ํตํด์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ฐพ์๋ณด์๊ธฐ ๋ฐ๋๋๋ค.