👤

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.


Răspuns :

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:

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari