728x90
반응형

 

https://www.acmicpc.net/problem/23972

 

23972번: 악마의 제안

첫째 줄에 악마가 제안한 정수 K와 N이 공백을 사이에 두고 주어진다. (1 ≤ K, N ≤ 200,000,000)

www.acmicpc.net

 

 

이 문제는 K와 N의 범위가 200,000,000까지 갈 수 있기 때문에

연산 결과를 저장하는 변수를 사용할 경우에 long으로 선언해줘야 한다!

 

n(x-k) >= x 이 식을 세운 후에 정리하면,

x >= nk/(n-1) 이렇게 된다.

 

이때 n = 1일 경우 0으로 나누게 되기 때문에 이때는 연산이 불가능 하다.

 

이 문제에서 깨달은 기법이 있다,,,

이 문제에서 금액은 정수여야한다고 하는데 그래서 나는 올림 연산을 사용해야겠다고 생각했는데..

(n*k) % (n-1) == 0 인지만 확인해주면,, 정수로 나올지 안나올지 알게되니까.. 

이 연산 후에 +1을 해주면 됐었다 ㄷㄷ.. 

뭔가 새롭게 깨달아서 이렇게 블로그에 남긴다. 

 

브론즈 문제여도 얻어가는 건 있는 것 같다. 

 

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int k = Integer.parseInt(st.nextToken());
        int n = Integer.parseInt(st.nextToken());
        if(n==1){
            System.out.println(-1);
            return;
        }
        long answer = (long)n*k/(n-1);
        if((n*k)%(n-1)!=0)
            answer++;
        System.out.println(answer);
    }
}
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기