Помогите написать программу, срочно!!! на любом языке прогр. Даю 49 баллов!!!
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Найти все возможные значения длины гипотенузы в прямоугольном треугольнике с целыми сторонами, если один из катетов имеет длину p, где p — простое число.
Напоминаем, что простым называется целое положительное число, имеющее ровно два делителя — единицу и самого себя.
Формат ввода
Входные данные содержат одно целое число p (2 ≤ p ≤ 109+9, p — простое).
Формат вывода
Если пифагоровых треугольников с катетом длины p нет, выведите -1. Иначе выведите возможные длины гипотенуз треугольников, перечисленные в порядке возрастания (то есть от меньшей к большей).
Пример
Ввод Вывод
3 5
Примечания
Пояснение к примеру: cуществует только один целочисленный прямоугольный треугольник с катетом равным 3 — классический пифагоров треугольник c длиной гипотенузы, равной 5.
Решением к данной задаче является программа, написанная на одном из представленных в системе языков программирования. Программа должна считывать данные со стандартного потока ввода (иначе говоря, «с клавиатуры») и выводить ответ в стандартный вывод (иначе говоря, «на экран»).
Ответы на вопрос
Ответил FlezZz23
0
var a,i:int64;
x:double;
s,l:string;
begin
readln(a);
s:='';
l:=s;
if (a+1) mod 4=0 then
i:=a+1
else
i:=a+3;
while a*a>=2*i+1 do begin
x:=sqrt(i*i+a*a);
if x-int(x)=0 then
s:=s+FloatTostr(x)+' ';
i+=4;
end;
if l=s then writeln('-1') else
writeln(s);
end.
Ответил MariSar
0
выдает ошибку при компиляции((
Ответил Анапус
0
а ты просто скопировала?
Ответил fluffnastya214
0
var p:integer;
begin
readln (p);
if (p=2)then writeln ('-1') else
writeln ((p*p-1)/2+1);
end.
Ответил Анапус
0
с int64 вроде с большими числами выводит, но все равно пишет типа неправильное решение
Ответил Аноним
0
А что неправильно? Для простого катета существует ровно одна пифагорова тройка, всё верно написали.
Ответил Анапус
0
нужно int 64 и формулу (p*p-1)div2 + 1
Ответил Аноним
0
На тебе на нормальном языке, и не майся ерундой: javascript:var p=prompt();if(p==2)alert(-1);else alert((p*p-1)/2+1|0);
Ответил Аноним
0
"|0" даже лишнее тут.
Новые вопросы
Русский язык,
2 года назад
Русский язык,
2 года назад
Физика,
7 лет назад
Геометрия,
7 лет назад
Литература,
9 лет назад