카테고리 없음

백준] 1500 - 최대 곱

TwinParadox 2018. 2. 6. 20:30
728x90

시간 제한 : 2초

메모리 제한 : 128MB




입력

첫째 줄에 두 수 S와 K가 주어진다. K는 20보다 작거나 같고, S는 100보다 작거나 같으며 K보다 크거나 같다.




출력

첫째 줄에 정답을 출력한다. 답은 9223372036854775807보다 작다.




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	long long s, k, sum = 1, tmp1, tmp2;
	cin >> s >> k;
	tmp1 = s / k;
	tmp2 = s - tmp1*k;
	for (int i = 1; i <= k - tmp2; i++)
		sum *= tmp1;
	for (int i = 1; i <= tmp2; i++)
		sum *= (tmp1 + 1);
	cout << sum;
}




Tip

곱하는 수의 차이가 적으면 적을 수록 곱한 값이 커진다는 사실을 알고 있으면 문제를 풀 수 있다. int형을 초과할 수 있다는 사실을 알아두도록 하자. 일례로, s가 9, k가 3인 경우에는 1, 1, 7로 나누는 것보다 2, 2, 5가, 그리고 그보다 3, 3, 3이 각 수를 곱했을 때 더 크다. 



728x90