Саша совершенно не любит спиннеры, потому он рисует в тетрадке. Он
Саша совершенно не любит спиннеры, поэтому он живописует в тетрадке. Он взял тетрадный лист из NxM клеток и пронумеровал все клетки разными числами. Теперь ему стало интересно, сколько различных треугольников он может вырезать из этого листа по границам клеточек.
Программка получает на вход два числа N и M - размеры начального листа. Все числа положительные, и не превосходящие 75000.
Программка должна вывести одно число - кол-во прямоугольников.
1 ответ
Агата Калябина
Посчитаем сколько всего узлов на этом листке:
у нас он N клеточек в вышину, означает всего в каждом столбике N+1 узел;
у нас он М клеток в ширину, означает всего в каждой строке М+1 узел.
Значит всего узлов (N+1)*(М+1).
Чтоб определьть прямоугольник, надобно найти два узла в которых будут обратные углы:
1-ый узел мы можем выбрать (N+1)*(М+1) способами;
2-ой узел мы можем избрать N*М методами (мы не можем избрать тот столбик и тот ряд, в котором у нас стоит 1-ый узел).
Тоэсть всего методов избрать (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 lt;iostreamgt;using namespace std;int main()
int N, M, k;
cin gt;gt; N gt;gt; M;
k = (N+1)*(M+1)*N*M / 4;
cout lt;lt; k lt;lt; 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.
у нас он N клеточек в вышину, означает всего в каждом столбике N+1 узел;
у нас он М клеток в ширину, означает всего в каждой строке М+1 узел.
Значит всего узлов (N+1)*(М+1).
Чтоб определьть прямоугольник, надобно найти два узла в которых будут обратные углы:
1-ый узел мы можем выбрать (N+1)*(М+1) способами;
2-ой узел мы можем избрать N*М методами (мы не можем избрать тот столбик и тот ряд, в котором у нас стоит 1-ый узел).
Тоэсть всего методов избрать (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 lt;iostreamgt;using namespace std;int main()
int N, M, k;
cin gt;gt; N gt;gt; M;
k = (N+1)*(M+1)*N*M / 4;
cout lt;lt; k lt;lt; 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.
Konopelchenkova Oksana
Спасибо за твоё решение, но с++ не компилируется, а Паскаль не проходит 3 теста. Скажи пож: это Pascal ABC или Free Pascal?
Борька Исковских
На c++ всё правильно
Evgenij Stronov
создайте консольное прибавление, перед return 0; напишите system (pause), тогда вы увидите решение, а так оно будет запираться автоматом
Женя
Или в обыкновенном пустопорожнем проекте включите библиотеку include и перед return пропишите _getch();
Кирилл Черепенчук
За Паскаль ни чего сказать не могу, не знаю языка
Максим Корпеенков
А есть на Pythone?
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.
Разные вопросы.
Сочинение на тему "Русский язык не сможет умереть!"
Математика.
Приветствую!
Меня зовут Станислав, я представляю компанию under.site.
Хотел бы предложить интересное решение
Разные вопросы.
Масса трёх одинаковых пакетов чая 180г чему равна масса
Математика.
Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл
Химия.
Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы
Русский язык.
Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника
Геометрия.
Облако тегов