1. 이 문제를 풀 때 가장 중요하게 알아야 하는 것은 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾는 것이다. 어떻게 구할까??
합이 S인 K개의 양의 정수를 찾는 방법은 S를 K로 나눈 몫 K-1개와 나눈 몫+1 한개의 수인 K개의 수의 곱이 최대의 값을 가진다는 것이다.
코드
정답 코드 : 합이 S인 K개의 양의 정수를 찾는 방법은S를 K로 나눈 몫 K-1개와나눈 몫+1 한개의 수인K개의 수의 곱이 최대의 값이다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int S, K;
public static void main(String[] args) throws Exception {
SetData();
System.out.println(FindMaxValue());
}
private static void SetData() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
S = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
}
private static long FindMaxValue() {
int q = S / K; // 몫
int r = S % K; // 나머지
long max = 1;
for (int i = 1; i <= K; i++) {
if (i <= r) {// 나머지 갯수만큼 +1
max *= (q + 1);
} else {
max *= q;
}
}
return max;
}
}