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
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
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Franceza,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă