C++

C + + Joseph ring instance code


C + + Joseph ring instance code

Joseph ring is a mathematical application problem: known n individuals (with Numbers 1,2,3… Sit around a round table. Count from the person numbered k, and the person who counts to m is listed; His next person counts again from 1, and the person who counts to m goes out again; Repeat this pattern until everyone around the round table is out of line.

Analysis: if there are individuals with n, if everyone wants to withdraw, they can withdraw only if everyone calls m. Therefore, it can be calculated that n*m is the total number of times all people declare.

Code:

/*
 *    Joseph out
 */
#include <stdio.h>

int main()
{
  char peo[100] ;
  char *p_peo = peo;
  int i , n , skip , flag[100] = {0} , cnt;
  int *p_flag = NULL;
  printf(" Please enter the number of people: ");
  scanf("%d", &n);
  printf(" All of them are as follows: \n");
  for(p_peo , i = 0 ; p_peo < peo + n ; ++p_peo , ++i)
  {
    *p_peo = 'a' + i;
    printf("%c ", *p_peo);
  }
  printf("\n");

  printf(" Please enter a value: ");
  scanf("%d", &skip);

  cnt = 0;
  while(cnt <= n * skip)
  {
    for(p_peo = peo , p_flag = flag ; p_peo < peo + n ; ++p_peo , ++p_flag)
    {
      if(*p_flag)
        continue;

      cnt++;
      if(!(cnt % skip))
      {
        *p_flag = 1;
        printf("%c ", *p_peo);
      }
    }
  }
  printf("\n");
  return 0;
}

If you have any questions, please leave a message or come to the site community to exchange discussion, thank you for reading, hope to help you, thank you for your support of the site!