코딩테스트/Softeer

[Softeer]바이러스 - Java

GAEBAL 2022. 5. 20. 22:24
728x90

문제

https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407

 

Softeer

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

softeer.ai

 

 

풀이

특별한 알고리즘 문제가 아니라 수학적인 사고를 보는 문제인 것 같다!

Softeer에 다른 문제들도 어떤 유형인지 흘끔흘끔 봤는데 이런 수학적 사고를 요하는 문제들도 꽤 있는 것 같다!

문제의 조건을 잘 보고 풀어야 한다.

그냥 평소처럼 풀면 무조건 시간 초과나, overflow가 일어나기 때문에 타입이나, 푸는 방식에 주의하며 문제를 해결해야 할 듯 하다!!!

 

그냥 전체 결과를 다 계산한 다음에 1000000007로 mod 연산을 하면 overflow가 나기 때문에 제곱을 한번 할 때마다 mod 연산을 해주는게 포인트이다!
mod 연산이기 때문에 중간중간에 해줘도 결과값에는 영향을 미치지 않기 때문!

 

 

코드

// Softeer - 바이러스
// https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407

import java.util.*;
import java.io.*;

public class Softeer_Num407_바이러스 {

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        long K = sc.nextLong();
        long P = sc.nextLong();
        long N = sc.nextLong();

        for (int i = 0; i < N; i++) {
            K = (K * P) % 1000000007;
        }

        System.out.println(K);

//        System.out.println((long)(K * Math.pow(P, N)) % 1000000007);

    }
}
728x90