문제 링크입니다: https://www.acmicpc.net/problem/1500
고등학교 수학을 배웠다면 상식적으로 곱하는 숫자들끼리의 차가 적을수록 곱이 커지는 것을 알고 있습니다.
따라서 아래와 같이 코드를 작성했습니다.
#include <iostream>
using namespace std;
long long S, K;
//곱하는 숫자들의 차가 적을수록 결과가 커진다
long long maxMultiple(void)
{
long long result = 1;
long long multiplier = S / K;
long long cnt = S - (multiplier * K); //multiplier+1을 곱하는 횟수
//multiplier 곱하는 횟수 = K - cnt
for (int i = 0; i < K - cnt; i++)
result *= multiplier;
//나머지는 multiplier+1 을 곱한다
for (int i = 0; i < cnt; i++)
result *= (multiplier + 1);
return result;
}
int main(void)
{
cin >> S >> K;
cout << maxMultiple() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2178번 미로 탐색 (2) | 2018.04.29 |
---|---|
백준 11509번 풍선 맞추기 (0) | 2018.04.29 |
백준 1541번 잃어버린 괄호 (3) | 2018.04.28 |
백준 2421번 저금통 (0) | 2018.04.28 |
백준 2780번 비밀번호 (0) | 2018.04.27 |