傳送門
題目描述
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++;
}
}
}