美文网首页
【MAC 上学习 C++】Day 50-2. 实验8-1-8 报

【MAC 上学习 C++】Day 50-2. 实验8-1-8 报

作者: RaRasa | 来源:发表于2019-10-13 11:48 被阅读0次

    实验8-1-8 报数 (20 分)

    1. 题目摘自

    https://pintia.cn/problem-sets/13/problems/549

    2. 题目内容

    报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。

    本题要求编写函数,给出每个人的退出顺序编号。

    函数接口定义:

    void CountOff( int n, int m, int out[] );
    其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上的人是第out[i-1]个退出的。

    输入样例:

    11 3

    输出样例:

    4 10 1 7 5 2 11 9 3 6 8

    3. 源码参考
    #include <iostream>
    
    using namespace std;
    
    #define MAXN 20
    
    void CountOff( int n, int m, int out[] );
    
    int main()
    {
        int out[MAXN], n, m;
        int i;
    
        cin >> n >> m;
        CountOff( n, m, out );   
        for ( i = 0; i < n; i++ )
        {
          cout << out[i] << " ";
        }
    
        cout << endl;
    
        return 0;
    }
    
    void CountOff( int n, int m, int out[] )
    {
      int i, cnt;
      int a[MAXN] = { 1 };
      int c;
    
      i = 0;
      while(i < n)
      {
        a[i++] = 1;
      }
    
      cnt = 0;
      i = 0;
      c = 0;
      while(cnt < n)
      {
        if(a[i] == 1)
        {
          c++;
        }
    
        if(c == m)
        {
          out[i] = ++cnt;
          a[i] = 0;
          c = 0;
        }
        
        i++;
        if(i == n)
        {
          i = 0;
        }
      }
    
      return;
    }
    

    相关文章

      网友评论

          本文标题:【MAC 上学习 C++】Day 50-2. 实验8-1-8 报

          本文链接:https://www.haomeiwen.com/subject/ffwxmctx.html