Написать программу на пайтоне: вводится периметр треугольника n (целое, 0<n<10^9) Вывести сколько прямоугольных (с целыми сторонами) треугольников существует с данным периметром вывести стороны этих треугольников в лексиграфическом порядке
Ввод:
120
Вывод:
3
20 48 52
24 45 51
30 40 50
Ввод:
12
Вывод:
1
3 4 5
ВУЗы и колледжи
Решите олимпиадную задачу пж!
А PascalABC подойдет?

var p, Col : integer;
begin
Col := 0;
Write (' Введите периметр треугольника p = ') ; ReadLn (p);
for var i := 1 to p do
for var j := i to p do
for var k := j to p do
begin
If (i + j + k = p) and (sqr(i) + sqr(j)=sqr(k)) then
begin
WriteLn (i:5, j:5, k:5); Col := Col + 1;
end;
end;
Write (' Количество треугольников равно ', Col);
end.

var p, Col : integer;
begin
Col := 0;
Write (' Введите периметр треугольника p = ') ; ReadLn (p);
for var i := 1 to p do
for var j := i to p do
for var k := j to p do
begin
If (i + j + k = p) and (sqr(i) + sqr(j)=sqr(k)) then
begin
WriteLn (i:5, j:5, k:5); Col := Col + 1;
end;
end;
Write (' Количество треугольников равно ', Col);
end.
Подсчитайте количество возможных прямоугольных треугольников с заданным периметром
Автор
Суджандутта
Читать
Обсудить
Курсы
Практика
Учитывая периметр P, задача состоит в том, чтобы найти количество возможных прямоугольных треугольников с периметром, равным p.
Примеры:
Input: P = 12
Output: number of right triangles = 1
The only right angle possible is with sides
hypotenuse = 5, perpendicular = 4 and base = 3.
Input: p = 840
Output: number of right triangles = 8
Рекомендуется: Пожалуйста, сначала попробуйте свой подход на {IDE}, прежде чем переходить к решению.
Итак, цель состоит в том, чтобы найти количество решений, которые удовлетворяют уравнениям a + b + c = p и a 2 + b 2 = c 2.
Наивный подход состоит в том, чтобы выполнить два цикла для a (от 1 до p / 2) и b (от a + 1 до p / 3), затем сделать c = p-a-b и увеличить количество на единицу, если a * a + b * b == c * c . Это займет O(p^{2}) время.
Эффективный подход можно найти с помощью небольших алгебраических манипуляций :
a ^{2}+ b ^{2}= c ^{2} или, (a + b) ^{2}-2ab = c ^{2} или, (p-c) ^{2}-2ab = c^{2} или, p ^{2}-2cp-2ab = 0 или, 2ab = p ^{2}-2cp или, 2ab = p ^{2}-2p (p-a-b) или, 2a (p-b) = p(p-2b) или, a = (p/2) * ((p-2b)/(p-b))
Автор
Суджандутта
Читать
Обсудить
Курсы
Практика
Учитывая периметр P, задача состоит в том, чтобы найти количество возможных прямоугольных треугольников с периметром, равным p.
Примеры:
Input: P = 12
Output: number of right triangles = 1
The only right angle possible is with sides
hypotenuse = 5, perpendicular = 4 and base = 3.
Input: p = 840
Output: number of right triangles = 8
Рекомендуется: Пожалуйста, сначала попробуйте свой подход на {IDE}, прежде чем переходить к решению.
Итак, цель состоит в том, чтобы найти количество решений, которые удовлетворяют уравнениям a + b + c = p и a 2 + b 2 = c 2.
Наивный подход состоит в том, чтобы выполнить два цикла для a (от 1 до p / 2) и b (от a + 1 до p / 3), затем сделать c = p-a-b и увеличить количество на единицу, если a * a + b * b == c * c . Это займет O(p^{2}) время.
Эффективный подход можно найти с помощью небольших алгебраических манипуляций :
a ^{2}+ b ^{2}= c ^{2} или, (a + b) ^{2}-2ab = c ^{2} или, (p-c) ^{2}-2ab = c^{2} или, p ^{2}-2cp-2ab = 0 или, 2ab = p ^{2}-2cp или, 2ab = p ^{2}-2p (p-a-b) или, 2a (p-b) = p(p-2b) или, a = (p/2) * ((p-2b)/(p-b))
С двойным циклом:
n, k, T = int(input()), 0, []
for a in range(1, n + 1):
na, aa = n - a, a * a
for b in range(a, n + 1):
c = na - b
if c
Похожие вопросы
- Помогите, пожалуйста, решить олимпиадную задачу
- Олимпиадная задача по физике 1981 год...?
- Олимпиадная задача по физике Перельмана...?
- ПОМОГИТЕ решить две задачи по комбинаторике
- Нужно решить две задачи (БЖД).
- Здравствуйте,помогите решить пожалуйста задачи по диффурам
- Помогите решить экономическую задачу, 1 курс
- РЕШИТЕ ПОЖАЛУЙСТА ЗАДАЧУ ПО ТЕРМЕХУ
- Как решить эти ЗАДАЧИ по МАТЕМатике
- Помогите решить 2 задачи по физике.