Informatică, întrebare adresată de mihaelaadrianam, 9 ani în urmă

Într-o închisoare cu n celule se află, la un moment dat, n deţinuţi. Se ia hotărârea să fie eliberaţi anumiţi deţinuţi, alegerea lor făcându-se într-un mod special. În închisoarea aceea erau tot n gardieni. Procedeul de determinare a deţinuţilor ce vor fi eliberaţi este următorul: gardianul k pleacă de la celula k şi mergând din k în k celule, schimbă starea uşilor pe la care trece,1<=k<=n. În final anumite celule vor rămâne deschise, deţinuţii respectivi fiind eliberaţi. Puteţi afla care? Iniţial toate uşile sunt închise.
cum se face in c ?

Răspunsuri la întrebare

Răspuns de WizThink
0
#include <iostream>
#define CELULE 128 // Pot fi 50/100/etc.
using namespace std;
void main()
{
int n,i,k;

cout<<"Numarul total de detinuti/gardieni este ";cin>>n;

cout<<"Gardianul k este ";cin>>k;
bool v[CELULE];
for(i=0;i<CELULE;i++) v[i] = false; // Initial toate celule sunt inchise

i=k;

while(i<CELULE)
{ v[i] = true; // Gardianul deschide celula k
i=k+k; // Merge "din k in k" celule
}
for(i=0;i<CELULE;i++) if(v[i]) cout<<i<<" ";
}

Unde nu intelegi intreaba

mihaelaadrianam: #include<stdio.h>
#include<stdlib.h>

int main ()
{
    int m,n,k;
    printf("numarul de celule=");
    scanf("%d", &m);
    k=1;
    n=1;
    while (n<=m)
    {
        printf("%d\n",n);
    k=k+2;
    n=n+k;
    }
}
merge si asa , multumesc :)
Alte întrebări interesante