
이 문제는 가능한 최대의 곱을 출력해야한다는 문제
더한값이 10
더할수있는 횟수가 3이면
10에서 3을 나누면 3,3,3이 나오게되는데
여기서 나머지가 1이므로 3,3,3중에서 1을 더하면 3,3,4가 된다.
만약에 더한값이 30이고 더할수 있는 횟수가 12가된다면
12,12 나머지가 6이 남는다.
이 나머지를 현재 구해져있는 몫에다가 1씩 계속 더해주면
15,15가 되고, 이 값이 최대값이 된다.
9223372036854775807 이 값은 int64=long long 최대값
#include <iostream>
#include <vector>
using namespace std;
int S, K;
int main()
{
cin >> S >> K;
vector<int> a;
int t1 = S / K;
int t2 = S % K;
for (int i = 0; i < K; ++i)
{
a.push_back(t1);
}
int cnt = 0;
for (int i = 0; i < t2; ++i)
{
if (cnt == a.size())
cnt = 0;
a[cnt]++;
cnt++;
}
long long ans = a[0];
for (int i = 1; i < a.size(); ++i)
{
ans *= a[i];
}
cout << ans;
}
'알고리즘' 카테고리의 다른 글
| 4256 트리 (0) | 2021.08.21 |
|---|---|
| 6416 백준 트리인가? (0) | 2021.08.20 |
| 21939 백준 (0) | 2021.08.18 |
| 백준 2169 로봇조종하기 (0) | 2021.08.13 |
| 알고리즘 시간복잡도 (0) | 2021.08.10 |