În vederea premierii la un concurs de informatică N
candidați sunt rugați să se așeze pe un cerc. Elevii sunt identificați în ordine prin numerele de la 1
la N
. Comisia pleacă din dreptul primului elev, face x
1
pași pe cerc și pune coronița elevului respectiv. Mai departe, comisia merge în continuare pe cerc x
2
pași și pune o a doua coroniță elevului curent. Daca elevul curent are deja o coroniță atunci se numără și acea poziție și trece mai departe. După N
astfel de acțiuni premierea se încheie. Premierea se consideră a fi validă dacă toți candidații au primit câte o coroniță.
Cerința
Aflați dacă premierea a fost validă și de asemenea, aflați a câta coroniță a fost pusă elevului cu numărul 1
.
Date de intrare
Fișierul de intrare coronite.in
conține :
- Pe prima linie numărul
N
de elevi. - Pe a doua linie,
N
valorix
1
,x
2
, … ,x
N
numere naturale nenule, reprezentând, în ordine, numărul de pași pe cerc pe care îl efectuează comisia pentru premierea următorului elev.
Date de ieșire
Fișierul de ieșire coronite.out
va conține:
- Pe prima linie se va scrie numărul
1
dacă premierea a fost validă sau0
în caz contrar
-Pe a doua linie o valoareNR
reprezentând a câta coroniță i-a fost acordată elevului cu numărul de concurs1
. Dacă elevul1
nu a fost premiat valoarea luiNR
va fi0
.
Restricții și precizări
1 ≤ N ≤ 100
1 ≤ x
i
≤ 2*N
- Dacă primul copil primește mai multe coronițe, se va afișa numărul de ordine al primei coronițe primite de el.
Exemplul 1
coronite.in
6 3 1 9 4 1 2
coronite.out
1 5
Explicație
Se pun coronite, in ordine, elevilor: 4
, 5
, 2
, 6
, 1
, 3
. Toți elevii au coronițe. Elevului 1
i se pune a 5
-a coroniță.
Exemplul 2
coronite.in
4 1 3 4 1
coronite.out
0 2
Explicație
Se pun coronițe elevilor: 2
, 1
. Elevul 1
primește a 2
-a coroniță.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Coronite:
#include <fstream>
using namespace std;
ifstream fin("coronite.in");
ofstream fout("coronite.out");
int x[101],sel[101],n;
int main()
{int i,j,nr=0,poz=1,ok;
fin>>n;
for(i=1;i<=n;i++) fin>>x[i];
for(i=1;i<=n;i++)
{
for(j=1;j<=x[i];j++)
{
poz++;
if (poz>n) poz=1;
}
if(poz==1&& sel[1]==0) nr=i;
sel[poz]=1;
}
ok=1;
for(i=1;i<=n;i++)
if(sel[i]==0)ok=0;
if(ok)fout<<1<<'\n';
else fout<<0<<'\n';
fout<<nr<<'\n';
fin.close();fout.close();
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1483 Coronite
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1483 Coronite de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!