๋ฌธ์ - Baekjoon 1009 : ๋ถ์ฐ์ฒ๋ฆฌ
https://www.acmicpc.net/problem/1009
1009๋ฒ: ๋ถ์ฐ์ฒ๋ฆฌ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ์ ์ a์ b๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
www.acmicpc.net
ํต์ฌ
๋ถ์ฐ์ฒ๋ฆฌ์์ ํน์ ์์ ์ด ์ฒ๋ฆฌ๋ ์ปดํจํฐ์ ๋ฒํธ ์์ธก.
-> ๋ ์ ์์ ๋๋์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ ์์ฑ.
๋ด์ฉ
์ฃผ์ด์ง ์์ ์ ๋ํด ๋ง์ง๋ง ์ซ์๊ฐ ์ฒ๋ฆฌ๋ ์ปดํจํฐ ๋ฒํธ๋ฅผ ์์ธกํ๋ ๋ฌธ์ ์ ๋๋ค. ๊ฐ ์์ ์ a^b ํํ๋ก ์ฃผ์ด์ง๋ฉฐ, ์ด๋ฅผ ํตํด ๋ง์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋ ์ปดํจํฐ ๋ฒํธ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
- a^b์ ๊ณ์ฐ ๊ฒฐ๊ณผ ๋์ , a์ ๊ฑฐ๋ญ์ ๊ณฑ ํจํด์ ๋ถ์ํ์ฌ ๋ง์ง๋ง ์ซ์์ ๋ฐ๋ณต ํจํด์ ์ฐพ์ต๋๋ค.
- ๊ฐ ์ซ์๋ง๋ค ๋ฐ๋ณต๋๋ ๋ง์ง๋ง ์ซ์์ ํจํด์ ์ด์ฉํ์ฌ b์ ํด๋นํ๋ ๋ง์ง๋ง ์ซ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ํจํด์ ์ด์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ณ์ฐ๋์ ์ค์ด๊ณ ๋น ๋ฅธ ์์ธก์ด ๊ฐ๋ฅํฉ๋๋ค.
์ฝ๋
T = int(input()) # ํ
์คํธ ์ผ์ด์ค์ ์
for _ in range(T):
a, b = map(int, input().split())
a %= 10 # a์ ๋ง์ง๋ง ์๋ฆฌ ์ซ์๋ง ์ฌ์ฉ
if a == 0: # 0์ผ ๊ฒฝ์ฐ ํญ์ 10๋ฒ ์ปดํจํฐ
print(10)
else:
cycle = [a]
while True:
next_num = (cycle[-1] * a) % 10
if next_num == cycle[0]: # ์ํ ํจํด ์์
break
cycle.append(next_num)
print(cycle[(b % len(cycle)) - 1])
ํ์ด
- `a`์ ๋ง์ง๋ง ์๋ฆฌ ์ซ์๋ง ์ฌ์ฉํ์ฌ ํจํด์ ์ฐพ์ต๋๋ค.
- `a`๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ์ ๋ง์ง๋ง ์๋ฆฌ ์ซ์๊ฐ ์ฒ์๊ณผ ๊ฐ์์ง ๋๊น์ง ๋ฐ๋ณตํ์ฌ ํจํด์ ๋ง๋ญ๋๋ค.
- `b`๋ฅผ ํจํด ๊ธธ์ด๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น๋๋ ์ซ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
- Python์ ๋๋จธ์ง ์ฐ์ฐ์์ ๊ฑฐ๋ญ์ ๊ณฑ ์ฐ์ฐ์ ๋ํ ์ค๋ช
: [Python Official Documentation](https://docs.python.org/3/reference/expressions.html))
- ์ปดํจํฐ์ ๋ถ์ฐ ์ฒ๋ฆฌ์ ๊ดํ ๊ธฐ๋ณธ ์ด๋ก : [Distributed Computing Wikipedia](https://en.wikipedia.org/wiki/Distributed_computing))
'์ฝ๋ฉํ ์คํธ(Baekjoon)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] Baekjoon 1010 : ๋ค๋ฆฌ ๋๊ธฐ (0) | 2024.03.09 |
---|---|
[python] Baekjoon 1007 : ๋ฒกํฐ ๋งค์นญ (0) | 2024.01.22 |
[python] Baekjoon 1006 : ์ต๊ฒฉ์ ์ด๋ผ๊ธฐ (1) | 2024.01.21 |
[python] Baekjoon 1005 : ACM Craft (0) | 2024.01.21 |
[python] Baekjoon 1004 : ์ด๋ฆฐ ์์ (0) | 2024.01.20 |
๋๊ธ