Informatică, întrebare adresată de Puiutz, 9 ani în urmă

Gigel vrea un calculator nou care are prețul x. Tatăl acestuia, fiind profesor de matematica, i-a spus ca îi va cumpăra calculatorul dacă prețul x al acestuia este norocos. Un număr x este norocos dacă pătratul acestuia se poate scrie ca sumă de x numere consecutive. De exemplu, x = 7 este număr norocos deoarece, 7 * 7 = 4 + 5 + 6 + 7 + 8 + 9 + 10.

Gigel a obţinut T oferte de preț și dorește să știe pentru fiecare dintre acestea dacă prețul este corespunzătoare restricției pe care i-a impus-o tatăl său.
Date de intrare

Fișierul de intrare pc.in conține pe prima linie un singur număr natural T, reprezentând numărul de oferte. Pe a doua linie se află T numere naturale x1 x2 x3 … xT separate prin câte un spaţiu, cu semnificația din enunț.
Date de ieșire

Fișierul de ieșire pc.out va conține pe prima linie, separate prin câte un spațiu, cele T răspunsuri, în ordine.
Restricții și precizări

x < 2.000.000.000
T < 10


Exemplu

pc.in

3
3 4 7

pc.out

1 0 1

Răspunsuri la întrebare

Răspuns de stassahul
1
var 

x:array[1..9] of integer;
i,t:byte;
p:text;
s,k,l:integer;

begin

assign(p,'pc.in');
reset(p);
readln(p,t);
for i:=1 to t do read(p,x[i]);
close(p);

assign(p,'pc.out');
rewrite(p);

for i:=1 to t do begin
for k:=1 to sqr(x[i]) do begin
if sqr(x[i])=s then break;
s:=0;
l:=k;
for l:=l to sqr(x[i])-1 do begin
s+=l;
if sqr(x[i])=s then break;
end;
end;
if sqr(x[i])<>s then write(p,'0 ') else write(p,'1 ');
end;

close(p);

end.
Alte întrebări interesante