М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
darkmusson
darkmusson
09.05.2022 19:10 •  Информатика

Из n × m клеточек и пронумеровал все клетки различными числами. теперь ему стало интересно, сколько различных прямоугольников он может вырезать из этого листа бумаги по границам клеточек. программа получает на вход два числа n и m – размеры исходного листа. все числа – целые положительные, не превосходящие 75000. программа должна вывести одно число – количество прямоугольников, которые можно вырезать из данного листа бумаги (весь лист целиком также считается одним из возможных прямоугольников).

👇
Ответ:
совуша2007
совуша2007
09.05.2022
Посчитаем сколько всего узлов на этом листке:
у нас он N клеточек в высоту, значит всего в каждом столбике N+1 узел;
у нас он М клеточек в ширину, значит всего в каждой строчке М+1 узел.
Значит всего узлов (N+1)*(М+1).
Чтобы определьть прямоугольник, надо определить два узла в которых будут противоположные углы:
первый узел мы можем выбрать (N+1)*(М
второй узел мы можем выбрать N*М мы не можем выбрать тот столбик и тот ряд, в котором у нас стоит первый узел).
Тоэсть всего выбрать (N+1)*(М+1)*N*М, но это не так.
Рассмотрим весь лист как выбраный прямоугольник.
Пусть мы его выбрали так:
(0; 0),  (N+1; М+1).
Этот же прямоугольник мы считали, когда плучали с такими координатами:
1) (N+1; М+1),  (0; 0).
2) (N+1; 0),  (0; М+1).
3) (0; М+1),  (N+1; 0).
И так с каждым прямоугольником, тоэсть каждый прямоугольник мы считаем 4 раза, тоэсть конечная формула такова:
(N+1)*(М+1)*N*М / 4.
Осталось составить прогрмму, которая будет это вичислять.
С++:
#include <iostream>using namespace std;int main()
{
int N, M, k;
cin >> N >> M;
k = (N+1)*(M+1)*N*M / 4;
cout << k << endl;
return 0;
}

Pascal:
program Znanija;
var N, M, k:integer;
begin

read(N);
read(M);

k:=((N+1)*(M+1)*N*M) div 4;

writeln();
writeln(k);

end.
4,4(13 оценок)
Открыть все ответы
Ответ:
Sonyamay
Sonyamay
09.05.2022
Итак первые два символа кодируются кодовыми словами 0 и 10. Найдём для остав­ших­ся трех сим­во­лов наи­бо­лее ко­рот­кое пред­став­ле­ние, удо­вле­тво­ря­ю­щее усло­вию Фано. Из двузначных чисел можно взять 11, но тогда невозможно подобрать трехзначное число для четвертого символа, по этому не берем. Единственное подходящее трехзначное число - 110 (111 не подходит по той же причине. что и 11). Аналогично выбираем числа 1110 и 11110. 
В итоге получается ряд: 0, 10, 110, 1110, 11110.
Общая длина = 1+2+3+4+5=15 
4,5(35 оценок)
Ответ:
Саша23458
Саша23458
09.05.2022
Итак первые два символа кодируются кодовыми словами 0 и 10. Найдём для остав­ших­ся трех сим­во­лов наи­бо­лее ко­рот­кое пред­став­ле­ние, удо­вле­тво­ря­ю­щее усло­вию Фано. Из двузначных чисел можно взять 11, но тогда невозможно подобрать трехзначное число для четвертого символа, по этому не берем. Единственное подходящее трехзначное число - 110 (111 не подходит по той же причине. что и 11). Аналогично выбираем числа 1110 и 11110. 
В итоге получается ряд: 0, 10, 110, 1110, 11110.
Общая длина = 1+2+3+4+5=15 
4,5(1 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ