Pagini recente » Cod sursa (job #1931543) | Cod sursa (job #2460166) | Cod sursa (job #3157768) | Cod sursa (job #96359) | Cod sursa (job #479851)
Cod sursa(job #479851)
{Se considera n copii asezati in cerc si numerotati de la 1 la n in sens
trigonometric. Copiii joaca urmatorul joc: jocul incepe de la primul copil
(cel al carui numar de ordine este 1); la fiecare al i-lea pas al jocului
se numara i copii in sens trigonometric si este eliminat copilul la care
se ajunge; la pasul urmator numaratoarea incepe de la copilul care urmeaza
dupa cel eliminat.
Asadar, daca numarul copiilor este suficient de mare, la primul pas este
eliminat al doilea copil, la al doilea pas al patrulea, la al treilea pas
al saptelea, apoi la al patrulea pas al unsprezecelea si asa mai departe.
Cerinta
Va trebui sa determinati ordinea in care vor fi eliminati copiii.
Date de Intrare
Fisierul de intrare order.in contine pe prima linie un numar intreg n,
care reprezinta numarul de copii.
Date de Iesire
Fisierul de iesire order.out trebuie sa contina o singura linie pe care
se vor afla n numere distincte cuprinse intre 1 si n care reprezinta
numerele de ordine ale copiilor in ordinea in care au fost eliminati.
order.in order.out
6
2 4 1 3 5 6 }
program p1;
var f,g:text;
n,i,x,c,poz:word;
begin
assign(f,'order.in');
reset(f);
assign(g,'order.out');
rewrite(g);
read(f,n);
poz:=1;
c:=0;
for i:=1 to n do
begin
if poz+i<=n then
begin
write(g,poz+i,' ');
poz:=poz+i;
end
else
begin
write(g,poz+i-n+c,' ');
poz:=poz+i;
if poz+i>n then
poz:=poz+1-n+c;
c:=c+1;
end;
end;
close(f);
close(g);
end.