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
반응형
'알고리즘 (for 코딩테스트) > 백준_자바 (Java)' 카테고리의 다른 글
[Java 자바] 백준 알고리즘 4880번 : 다음수 (0) | 2022.04.20 |
---|---|
[Java 자바] 백준 알고리즘 1074번 : Z (0) | 2022.03.23 |
[Java 자바] 백준 알고리즘 2754번 : 학점계산 (0) | 2022.03.13 |
[Java 자바] 백준 알고리즘 2355번 : 시그마 (0) | 2022.03.07 |
[Java 자바] 백준 알고리즘 24510번 : 시간복잡도를 배운 도도 (0) | 2022.02.24 |
최근댓글