๐ ๋ฐฑ์ค 1009 - ๋ถ์ฐ์ฒ๋ฆฌ
โก๏ธ ๋์ ํ์ด
๋ฌธ์ ์์ฒด๋ ์ด๋ ต์ง ์์๋ค. ๋จ์ํ๊ฒ a ** b % 10
์ ๊ตฌํ๋ฉด ๋๋ ๋ฌธ์ ์๋๋ฐ, 2๊ฐ์ง๋ฅผ ์ ๊ฒฝ ์ฐ์ง ๋ชปํ๋ค.
- ์ ์
b
์ ๋ฒ์:1 <= b < 1,000,000
์ธ๋ฐ, ๊ฑฐ๋ญ์ ๊ณฑํํ๋ผ์ ๋์ค์ ๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ง๊ฒ ๋๋ค. a ** b % 10
: ๋ง์ฝ,a ** b
๊ฐ 10์ด ๋์ค๋ฉด 0์ด ์ถ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์กฐ๊ฑด์ ๋ฃ์ด์ค์ผ ํ๋ค.
1๋ฒ์ **
๋์ pow
๋ด์ฅ ํจ์๋ฅผ ์ด์ฉํ๋๋ฐ ๊ฒฐ๋ก ์ ์ผ๋ก x ** y
์ ์๊ฐ ๋ณต์ก๋๋ O(N)
์ด๊ณ , pow(x, y)
์ ์๊ฐ๋ณต์ก๋๋ O(1)
์ด๋ค. ์ ๊ทธ๋ฐ์ง๋ ์คํ์ค๋ฒํ๋ก์ฐ ์ง๋ฌธ์ ์ฐธ๊ณ ํ์. ๊ทธ๋ฆฌ๊ณ pow
ํจ์์์ ์ธ ๋ฒ์งธ์ธ์๊น์ง ๋๊ฒจ ์ค ์ ์๋๋ฐ pow(base, -exp, mod)
์ธ๋ฒ์งธ ์ธ์๋ mod
์ฐ์ฐ์ ํ ์ ์๋ค.
2๋ฒ์ x % 10
๋ฅผ ํ ๋ 10 % 10
์ด๋ฉด 0์ด ๋๋ฏ๋ก 0
์ผ ๋๋ 10์ ๋ํด์ฃผ๋ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค.
T = int(input())
for _ in range(T):
a, b = map(int, input().split())
result = pow(a, b, 10)
if not result:
print(result+10)
else:
print(result)
์ฌ๋ด์ผ๋ก x ** y
, pow(x, y)
, math.pow(x, y)
ํจ์ ์ค ์ ์ผ ๋น ๋ฅธ ํจ์๋ math.pow(x, y)
์ธ๋ฐ, ๋ค์ ์ฝ๋๋ฅผ ํ๋ฒ ์คํํ๋ฉด ๊ณง์ฅ ์ ์ ์๋ค.
import timeit
def show_timeit(command, setup):
print(setup + '; ' + command + ':')
print(timeit.timeit(command, setup))
print()
# Comparing small integers
show_timeit('a ** b', 'a = 3; b = 4')
show_timeit('pow(a, b)', 'a = 3; b = 4')
show_timeit('math.pow(a, b)', 'import math; a = 3; b = 4')
# Compare large integers to demonstrate non-constant complexity
show_timeit('a ** b', 'a = 3; b = 400')
show_timeit('pow(a, b)', 'a = 3; b = 400')
show_timeit('math.pow(a, b)', 'import math; a = 3; b = 400')
# Compare floating point to demonstrate O(1) throughout
show_timeit('a ** b', 'a = 3.; b = 400.')
show_timeit('pow(a, b)', 'a = 3.; b = 400.')
show_timeit('math.pow(a, b)', 'import math; a = 3.; b = 400.')
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 3047 - ABC (0) | 2021.06.07 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1076 - ์ ํญ (0) | 2021.06.07 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 11586 - ์ง์ ๊ณต์ฃผ๋์ ๋ง๋ฒ ๊ฑฐ์ธ (0) | 2021.06.04 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2615 - ์ค๋ชฉ (6) | 2021.06.03 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2902 - KMP๋ ์ KMP์ผ๊น? (0) | 2021.06.02 |
๋๊ธ