Мила любит играть в Тетрис. Сегодня ей попалась новая игра, которая очень похожа на Тетрис.В этой игре есть поле в форме стакана ширины n, разделенное на клетки размером 1×1. В отличиеот обычного Тетриса, в этой игре используются горизонтальные фигурки1 × x, состоящие из x клеток: высоты1 и ширины x. Перед падением очередной фигурки, игрок может выбрать ее размер x любым целым числом от1доn, включительно. Фигурки нельзя поворачивать, но можно двигать влево и вправо. Фигурка падает до тех пор, пока не наткнётся на другую фигурку, либо на дно стакана.Мила не любит оставлять пустые клетки под фигурами. Ее цель заполнить нижние ряды поля,чтобы занятая фигурками часть образовала прямоугольник ширины n.Вам задано состояние поля в формате: a1, a2, . . . , an, где ai число клеток, занятых в i-м столбце стакана. В заданном поле никакая пустая клетка не находится под занятой. Найдите, какое минимальное число фигурок ей понадобится, чтобы Мила смогла заполнить нижние ряды поля, образовав прямоугольник ширины n
#include <stdio.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int const n=3;
int mas[n][n];
int sum1, sum2;
bool magik;
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
{
printf("mas[%d][%d] = ", i+1, j+1);
scanf("%d",&mas[ i ][ j ]);
}
printf("\nВведенная матрица:\n");
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
printf("%d ",mas[ i ][ j ]);
}
printf("\n");
}
sum1=0;
sum2=0;
for (int i = 0; i<n; i++)
{
sum1 += mas[ i ][ i ];
sum2 += mas[ i ][ n-1-i ];
}
printf("Сумма главной диагонали = %d\n", sum1);
printf("Сумма побочной диагонали = %d\n", sum2);
magik = true;
for (int i=0; i<n; i++)
{
if (sum1==sum2)
{
sum2=0;
for (int j=0; j<n; j++)
{
sum2 += mas[ i ][ j ];
}
} else { magik=false; break; }
}
if (magik==true)
{
for (int i=0; i<n; i++)
{
if (sum1==sum2)
{
sum2=0;
for (int j=0; j<n; j++)
{
sum2 += mas[ j ][ i ];
}
}
else { magik=false; break; }
}
}
if (magik==true)
printf("\nМатрица является магическим квадратом\n");
else
printf("\nМатрица не является магическим квадратом\n");
system("pause");
return 0;
}
Объяснение:
Схе́ма Го́рнера (или правило Горнера, метод Горнера, метод Руффини-Горнера) — алгоритм вычисления значения многочлена, записанного в виде суммы мономов (одночленов), при заданном значении переменной. Метод Горнера позволяет найти корни многочлена[1], а также вычислить производные полинома в заданной точке. Схема Горнера также является простым алгоритмом для деления многочлена на бином вида {\displaystyle x-c}x-c. Метод назван в честь Уильяма Джорджа Горнера, однако Паоло Руффини опередил Горнера на 15 лет, а китайцам этот был известен еще в XIII веке.