https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=391&sw_prbl_sbms_sn=18559
Softeer
제한시간: C/C++(1초), Java/Python(2초) | 메모리 제한: 256MB 수퍼바이러스가 숙주의 몸속에서 0.1초당 P배씩 증가한다. 처음에 수퍼바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 수퍼바이러스로
softeer.ai
[난이도] level3
[유형] 분할정복
[풀이]
N 제한이 굉장히 크기 때문에 일일이 계산해주면 안되고 재귀함수를 이용한 분할정복을 해주어야 합니다.
#include <cstdio>
using ll = long long;
ll K,P,N,mod=1000000007;
ll sol(ll n){
if(n==1) return P;
ll ret = sol(n/2);
ret=(ret*ret)%mod;
if(n%2) ret=(ret*P)%mod;
return ret;
}
int main(){
scanf("%lld%lld%lld",&K,&P,&N);
printf("%lld",(sol(N*10)*K)%mod);
}
https://github.com/has2/Problem-Solving/blob/master/softeer/level3/수퍼바이러스.cpp
'Problem-Solving > Softeer' 카테고리의 다른 글
[Softeer/소프티어][level5] 복잡한 조립라인2 (C++) (0) | 2021.10.05 |
---|---|
[Softeer/소프티어][level4] 복잡한 조립라인1 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level4] 징검다리2 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level3] 징검다리 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level3] 강의실 배정 (C++) (0) | 2021.10.04 |