天天看點

猴子報數

​​傳送門​​

題目描述

n個猴子圍坐一圈并按照順時針方向從1到n編号,從第s個猴子開始進行1到m的報數,報數到第m的猴子退出報數,從緊挨它的下一個猴子重新開始1到m的報數,如此進行下去知道所有的猴子都退出為止。求給出這n個猴子的退出的順序表。

輸入

有做組測試資料.每一組資料有兩行,第一行輸入n(表示猴子的總數最多為100)第二行輸入資料s(從第s個猴子開始報數)和資料m(第m個猴子退出報數).當輸入0 0 0時表示程式結束.

輸出

思路:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
int a[110];

int main()
{
  int n;
  int s,m;
  while(scanf("%d%d%d",&n,&s,&m) && n && s && m)
  {
    memset(a,0,sizeof(a));
    int flag = s;
    int f = n,cnt = 1;
    while(n > 0)
    {
      if(a[flag])
      {
        flag++;
        if(flag == f+1)
        flag = 1;
        continue;
      }
      if(cnt == m)
      {
        a[flag] = 1;
        cnt = 0;
        if(n > 1)
        {
          printf("%d,",flag);
        }
        else
        {
          printf("%d\n",flag);
        }
        n--;
      }
      flag++;
      if(flag == f+1)
      flag = 1;
      cnt++;
    }
  }
  
}