Witam, znalazlem takie zadanko
Pewien informatyk zwykł spacerować po ulicy na której stał jego dom. Kiedyś, z nudów, policzył sumę numerów domów obok których przechodził. Zauważył, że suma jest taka sama kiedy idzie w lewo do końca ulicy (gdzie numery są coraz mniejsze) i kiedy idzie w prawo (gdzie numery są coraz większe). Bardzo mu się to spodobało i postanowił, że od tej chwili każdy z kupowanych przez niego domów będzie miał tą własność. Napisz program, który znajdzie pierwsze 10 par: numer domu, ilość domów na ulicy, które spełniają tą własność. Zakładamy, że informatyk nie liczył swojego numeru i że numery na ulicy to kolejne liczby naturalne. Dwie pierwsze takie pary to: 6,8 oraz 35,49.
i probuje je rozwiazac :))
napisalem naiwny algorytm i mam pytanie czy ktos zna jakis sposob na wyszukanie tych rozwiazan w jakis szybszy sposob albo zna odpowiedz na pytanie czy jest ich skonczona ilosc, jesli tak to dlaczego?
pozdrawiam
A to jest co udalo mi sie naskrobac :)
[code]
program numery_domow_3_0;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
znaleziono:Byte;
nr_domu,l_all,suma_l,suma_p:int64;
begin
nr_domu:=2;
l_all:=3;
znaleziono:=0;
suma_p:=3;
suma_l:=1;
while znaleziono<12 do
begin
while suma_p<suma_l do
begin
l_all:=l_all+1;
suma_p:=suma_p+l_all;
end;
if (suma_p=suma_l) then
begin
znaleziono:=znaleziono+1;
writeln(znaleziono:2,': ',nr_domu,', ',l_all);
end;
suma_l:=suma_l+nr_domu;
nr_domu:=nr_domu+1;
suma_p:=suma_p-nr_domu;
end;
write('koniec');
readln;
end.
[/code]
Jeszcze raz pozdro i z gory dzieki