Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка из темы множества
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Markson
Вот задачка, как зделать в масивах я примерно знаю, но мне нада её решыть с помощью множыств ( на украинском "множин"), с етим методом я никак немогу разобратся. На форуме вродебы ничего похожего ненаходил.


В порядке спадания напечатать все целые числа из диапазона 1..100 которые можно подати в виде sqr(n)+2*sqr(k) , где n,k целые числа.
Ozzя
var
i,n,k : Integer;
a : Set of Byte;
begin
a:=[];
readln(n,k);
for i:=1 to 100 do
begin
if i=sqr(n)+2*sqr(k) then
include(a,i);
end;
for i:=1 to 100 do
begin
if i in a then
Write(i,' ');
end;
readln;
end.

Не знаю что такое "спадания " сам реализуешь
Гость
Не совсем так.. Выражение "числа можно представить в виде" означет, что нужно найти все n и k, удовлетворяющие условию. Так что как-то примерно так:
var
i,n,k : Integer;
a : Set of Byte;
begin
a:=[];
for i:=1 to 100 do for n:=0 to 100 do for k:=1 to 100 do
if i=sqr(n)+2*sqr(k) then include(a,i);
for i:=100 downto 100 do if i in a then Write(i,' ');
readln;
end.

Цитата(Ozzя @ 22.04.2009 8:59) *
Не знаю что такое "спадания " сам реализуешь
Думаю, это значит в порядке убывания (сделал)
volvo
Непонятно только, зачем делать заведомо лишнюю работу: как только n или k превысит 10, сумма n2+2*k2 превысит 100, так что циклы по N и K можно ограничить 10-ю... А по i вообще убрать:

  for n := 0 to 10 do
for k := 1 to 10 do begin
i := n*n + 2*k*k;
if i <= 100 then include(a, i);
end;
for i := 100 downto 1 do if i in a then Write(i: 4);
Lapp
Цитата(volvo @ 22.04.2009 12:17) *
Непонятно только, зачем делать заведомо лишнюю работу: как только n или k превысит 10, сумма n2+2*k2 превысит 100, так что циклы по N и K можно ограничить 10-ю... А по i вообще убрать:
Совершенно согласен, я явно перестраховался smile.gif. Но, volvo, ты зря выкинул ноль из второго цикла - формула несимметричная относительно n и k. Число 25, например, удовлетворяет условию (52+2*02), а твое решение его не найдет. На n и k не накладывается никаких ограничений, кроме целости, так что по идее в цикл должны войти и отрицательные числа - но их мы отбрасываем, поскольку их квадраты равны квадратам положительных. Ноль же отбросить нельзя smile.gif.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.