Помогите плз с решением задачи:
В поpядке убывания напечатать все целые числа из диапазона
1..400, котоpые пpедставимы в виде n^2+2*k^2, но не пpед¬ставимы в виде 4*j^2+3*k^2 (n,k,i,j>=0).
Паскаль Множества
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Куда девать i? Нет ли тут опечатки?
Идея следующая:
Берем пустое множество Set1:=[];
Затем перебирает все пары n и k и если получившееся число >=1 b <=400, то Set1:=Set1+ЭтоЧисло;
Значения n и k надо предварительно оценить, так можно сделать
for n:=0 to 20 do for k:=0 to 14 do ....
Так как при больших значениях n или k результат точно выйдет за 400. Нет смысла рассматривать.
Аналогично получается набор чисел Set2, представимых формулой 2.
Теперь находим разность множеств Set3:=Set1-Set2;
Так как Set of не удастся вывести на печать, то придется проверять числа из диапазона [1..400] в обратном порядке, как требует условие.
for x:=400 downto 1 do if x in Set3 then write(x, ", ");
Идея следующая:
Берем пустое множество Set1:=[];
Затем перебирает все пары n и k и если получившееся число >=1 b <=400, то Set1:=Set1+ЭтоЧисло;
Значения n и k надо предварительно оценить, так можно сделать
for n:=0 to 20 do for k:=0 to 14 do ....
Так как при больших значениях n или k результат точно выйдет за 400. Нет смысла рассматривать.
Аналогично получается набор чисел Set2, представимых формулой 2.
Теперь находим разность множеств Set3:=Set1-Set2;
Так как Set of не удастся вывести на печать, то придется проверять числа из диапазона [1..400] в обратном порядке, как требует условие.
for x:=400 downto 1 do if x in Set3 then write(x, ", ");
Если N,K и J могут быть действительными, то и подход к решению будет совершенно другим. Уточните условия, а так же присутствие параметра I в задаче.
It's a long way to the top if you wanna rock'n'roll