VA ROG MULT!!
Numerele de la 1 la n sunt asezate in ordine crescatoare pe circumferinta unui cerc astfel incat n ajunge langa 1. Incepand cu numarul s, se elimina numerele din cerc din k in k, dupa fiecare eliminare cercul strangandu-se. Care va fi numarul ce va ramane ultimul?
Ex: daca vectorul initial este (1,2,3,4,5,6,7,8,9,10),iar k=3,s=1 se vor elimina pe rand numerele 3,6,9,2,7,1,8,5,10 si ramane numarul 4.
boiustef:
cu vector? sau ???
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
#include <iostream>
using namespace std;
int n,i,j,s,k,v[100];
int main()
{
cin >> n >> s >> k;
int nr=n;
for (i=1; i<=n; i++)
v[i]=i;
i=s;
while (nr>1)
{
j=0;
while (j<k)
{
if (v[i])
{
++j;
if (j==k)
{
--nr;
v[i]=0;
}
}
++i;
if (i>n) i=1;
}
}
i=1; while (v[i]==0) ++i;
cout << v[i];
return 0;
}
Explicație:
Alte întrebări interesante