1)Выбрать тему для разрабатываемой программы(например: университет) 2)Создать проект со структурой папок по архитектуре MVC
3)Реализовать 3 раздельных независимых класса(например: студент, аудитория, предмет)
4)В каждом классе прописать минимум 3 поля и 3 метода(например: поля id, name, groupNumbe и методы goToUniversity(), goToTheHostel(), goHome() )
5)Создать объект каждого из 3 классов, присвоить значения и продемонстрировать в консоли
void SayYourName(){
print(self.name)
}
Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.
Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.
Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов:
Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
Итак, должно выполняться
Подставив в исходную формулу, получаем
Это и есть ответ.
#include "stdafx.h"#include<conio.h>#include"iostream"#include "stdio.h"#include "time.h"
using namespace std;
int main(){ int x, y,c; setlocale(LC_ALL, "RUS"); srand((unsigned)time(NULL)); x = rand() % 8 + 2; y = rand() % 8 + 2; cout << "Сколько будет " << x << "*" << y << "?" << "\n"; cout << "Введите ответ и нажмите Enter "; cin >> c; if (x*y == c) { cout << "Правильно\n"; } else { cout << "Вы ошиблись " << x << "*" << y << "=" << c; }return 0;}