Felinare (clasa a 5-a)
Piaţa centrală a oraşului Bacău are formă circulară. De jur împrejurul pieţei au fost montate n felinare numerotate de la 0 la n-1. Fiecare felinar poate avea două stări: aprins sau stins. Seara, toate felinarele se aprind simultan. Turistul Vasile T. Popescu începe să se plimbe de jur împrejurul pieţei, pornind de la felinarul 0 spre felinarul 1, apoi de la 1 spre 2, ..., de la n-2 spre n-1, de la n-1 spre 0 etc, iar atunci când trece pe lângă un felinar, el execută exact una dintre următoarele operaţii:
dacă felinarul precedent (i-1 dacă i > 0 sau n - 1 dacă i = 0) este aprins, atunci schimbă starea felinarului curent (dacă era aprins îl stinge, dacă era stins îl aprinde);
dacă felinarul precedent este stins, atunci starea felinarului curent rămâne neschimbată.
Cerinţă
Determinaţi numărul minim de operaţii pe care trebuie să le execute turistul nostru până când felinarele sunt aprinse din nou toate.
Date de intrare
Fişierul de intrare felinare.in conţine pe prima linie numărul natural n reprezentând numărul de felinare.
Date de ieşire
Fişierul de ieşire felinare.out va conţine o singură linie pe care va fi scris un singur număr natural reprezentând numărul minim de operaţii ce trebuie să fie executate pentru ca toate felinarele să fie din nou aprinse.
Restricţii
2 ≤ n ≤ 5000
n este de forma 2k sau 2k+1
Turistul stinge cel puţin un felinar.
BrainlyUserBTW:
Dau coroana!!!
Răspunsuri la întrebare
Răspuns de
0
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("felinare.in");
ofstream g("felinare.out");
int main(){
bool v[5000];
int n,i;
f >> n;
//Pornire felinare
for(i=0;i<n;i++) v[i]=1;
//Simulare
bool ok=1;
int pasi=0;
while(ok==1){
pasi++;
//Caz special : Felinar #0
if(pasi%n==0){
if(v[n-1]) v[pasi%n] = !v[pasi%n];
}
//Caz obisnuit : Felinar != 0
else {
if(v[pasi%n-1]) v[pasi%n] = !v[pasi%n];
}
//Verificare solutie
ok=0;
for(int j=0;j<n;j++){
if(!v[j]) ok=1;
}
}
//Scriere rezultat
g << pasi;
}
Alte întrebări interesante
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Studii sociale,
8 ani în urmă
Engleza,
8 ani în urmă
Franceza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă