본문 바로가기
코딩테스트/softeer

[python] Level2_바이러스

by brown_board 2023. 1. 4.
728x90

https://softeer.ai/practice/info.do?idx=1&eid=407&sw_prbl_sbms_sn=117912 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

이 문제는 좀 짚고 넘어가야 하는게 있습니다.
단순한 거듭제곱에 대한 문제인데 for 문이나 pow함수로 거듭제곱을 표현한다면 시간복잡도가 O(n)이 됩니다.
이를 해결하기 위해서는 pow함수 자체를 알아보았다.

- pow함수 자체에 대한 개념

https://deok2kim.tistory.com/88

 

[python] pow, 제곱, 거듭제곱과 나머지

📗 파이썬에서 거듭제곱과 나머지를 구할 때! 속도 차이 🔵 pow(a,b) vs a**b 100의 100승을 구할 때 입력 방법 속도 100**100 0.8038559000000001 pow(100, 100) 0.8454946999999997 - 거듭제곱을 했을 때는 ** 을 쓰는것

deok2kim.tistory.com

위의 블로그를 참고하면
100의 100승을 100으로 나눈 나머지를 구할 때
pow(100,100,100)으로 구현하면 된다. 이떄 놀라운 사실은 단순히 100**100%100과 100**100보다 훨씬 빠르다는 것이다.

그래서 pow함수를 사용할때 나머지도 같이 적어주었다.

1
2
3
4
5
6
import sys
#sys.stdin = open("input4.txt","r")
 
k,p,n = map(int,sys.stdin.readline().split())
 
print((k * pow(p, n, 1000000007))%1000000007)
cs

 

728x90

'코딩테스트 > softeer' 카테고리의 다른 글

[python] Level2_GBC  (0) 2023.01.04
[python] Level2_회의실 예약  (1) 2023.01.03
[python] Level2_비밀 메뉴  (0) 2023.01.03
[python] Level2_지도 자동 구축  (0) 2023.01.01
[python] Level2_8단 변속기  (0) 2023.01.01

댓글