На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Пропоную не чекати пів року а ділитись розв'язками тут.
Алгоритм:
Добуток найбільший, якщо числа однакові.
Якщо числа різні, то зробимо різницю між ними мінімальною, тобто: 1
#include <iostream>;
using namespace std;
int main()
{
int n,k;
cin >> n >> k;
int max = n/k;//якщо можна розбити на однакові доданки, то яким буде значення такого доданку
int ost = n%k;//скільки буде чисел більших від max
int cel = k-ost;//скільки буде чисел, що дорівнюють max
for (int i=0; i<cel; i++)
cout << max << " ";
for (int i=0; i<ost; i++)
cout << max+1 << " ";
return 0;
}Відредаговано LVV (2020-11-08 12:38:01)
Поза форумом
#include <stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
//Complexity: O(k)
int main()
{
int n, k;
scanf("%d%d", &n, &k);
vector<int> a(k);
for(int i=0; i<k; i++)a[i]=n/k;
for(int i=0; i<n%k; i++)a[i]++;
reverse(a.begin(), a.end());
for(int i=0; i<k; i++)printf("%d ", a[i]);
return 0;
}
//Это моё творчество. Идея та же.Відредаговано GeniusDP (2020-11-08 17:34:19)
Поза форумом
#include <cstdio>
using std::scanf;
using std::printf;
int main()
{
int k,n;
scanf("%d%d",&n,&k);
for(int i=0;i<k;++i)
printf("%d ",(n+i)/k);
return 0;
}Поза форумом
(n+i)/k
это просто прекрасно!
Моё решение (python 2.7)
n, k = map(int, raw_input().split()) q, r = n/k, n%k print ' '.join([str(q)]*(k-r)+[str(q+1)]*r)
Поза форумом