D4. Разбиение на невозрастающие слагаемые, лексикографический порядок Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Дано натуральное число N. Рассмотрим его разбиение на натуральные слагаемые. Два разбиения, отличающихся только порядком слагаемых, будем считать за одно, поэтому можно считать, что слагаемые в разбиении упорядочены по невозрастанию.
Формат ввода
Задано единственное число N. (N ≤ 40)
Формат вывода
Необходимо вывести все разбиения числа N на натуральные слагаемые в лексикографическом порядке.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand((int)time(0));
int M, N;
cout << "M="; cin >> M;
do
{
cout << "N="; cin >> N;
if (N%2!=0) cout << "N - even. Repeat please...\n";
}
while (N%2!=0);
double **a = new double*[M];
for (int i = 0; i < M; i++)
a[i]=new double[N];
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
a[i][j]=rand()%9 + 1;
cout << a[i][j] << " ";
}
cout << "\n";
}
cout << "\n";
for (int i = 0; i < M; i++)
for (int j = 0; j < N/2; j++)
swap (a[i][j],a[i][j+N/2]);
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
cout << a[i][j] << " ";
cout <<"\n";
}
for (int i = 0; i < M; i++)
delete[]a[i];
delete[]a;
system("pause");
return 0;
}
Объяснение:
Событие: решение задачи. Источник информации: учитель. Приемник информации: ученик. Информационный носитель: доска. Событие: измерения давления. Источник ифнормации: пациент. Приемник информации: врач. Информационный носитель: тонометр. Событие: воспроизведение аудиофайла. Источник информации: пользователь. Приемник информации: сайт. Информациональнный носитель: ПК/телефон.
Событие: воспроизведение: видео и аудиофайла. Источник информации: пользователь. Приемник информации: телевизор. Информациональный
носитель: телевизор. Событие: воспроизведение
музыкального фрагмента в живую. Источник информации: ученик. Приемник информации: ближайшие слушатели. Информациональнный
Носитель: гитара.