Informatică, întrebare adresată de bbogdan888, 8 ani în urmă

Pe o linie orizontală se găsesc n greieri. Ei încep să stea „capră” într-o ordine prestabilită începând cu ultimul, pe rând, până la primul. Toţi greierii care îl preced pe cel care stă „capră” sar peste acesta, în ordine. De exemplu pentru n=4, mai întâi stă „capră” greierul 4 și peste el sar, în ordine, 3, 2 și 1. Apoi stă „capră” greierul 3 și sar peste el, în ordine, 2, 1 și 4. Apoi stă „capră” greierul 2 și peste el sar, în ordine, 1, 3 și 4. Apoi stă „capră” greierul 1 și sar peste el, în ordine, 4 , 3 și 2, și se revine la ordinea inițială.
Scrieți un program care citește numerele naturale n și m și determină:

a) De câte sărituri este nevoie pentru a se ajunge la ordinea inițială?
b) Cum vor fi așezați greierii după m sărituri?

Răspunsuri la întrebare

Răspuns de Porecla0987
1

a) n sarituri, evident

b)

#include <iostream>

using namespace std;

int main()

{

int n, m, greieri[100] = {0};

cin >> n >> m;

for (int i = 0; i < n; ++i)

{

 greieri[i] = i + 1;

}

for (int i = 0; i < n; ++i)

{

 cout << greieri[i] << " ";

}

cout << endl;

for (int i = n - m; i < n; ++i)

{

 int temp = greieri[n - 1];

 for (int j = n - 1; j > 0; --j)

 {

  greieri[j] = greieri[j - 1];

 }

 greieri[0] = temp;

 for (int k = 0; k < n; ++k)

 {

  cout << greieri[k] << " ";

 }

 cout << endl;

}

}

Alte întrebări interesante