프로그래밍/백준, 프로그래머스 문제 풀이
백준 1500번 최대곱 풀이(c++)
오늘의논리
2024. 2. 6. 12:08
728x90
문제
세준이는 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾으려고 한다. 만약 여러개일 경우 그 곱을 가능한 최대로 하려고 한다.
가능한 최대의 곱을 출력한다.
만약 S=10, K=3이면, 3,3,4는 곱이 36으로 최대이다.
입력
첫째 줄에 두 수 S와 K가 주어진다. K는 20보다 작거나 같고, S는 100보다 작거나 같으며 K보다 크거나 같다.
출력
첫째 줄에 정답을 출력한다. 답은 9223372036854775807보다 작다.
K의 기본베이스는 S/K 이기 때문에 각 K들에게 해당값을 넣어주고 S%K 값들을 순차적으로 하나씩 넣어줘서 풀게 되었다.
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main()
{
size_t S, K, answer(1);
cin >> S >> K;
int temp = S / K;
int remain = S % K;
vector<size_t> v(K, temp);
while (true)
{
if (!remain) break;
for (int i = 0; i < v.size(), remain>0; ++i)
{
--remain;
++v[i];
}
}
for (int i = 0; i < v.size(); ++i)
{
answer *= v[i];
}
cout << answer;
return 0;
}
728x90