有 nnn 個小朋友做遊戲,他們的編號分別是 1,2,3...n1,2,3...n1,2,3...n。他們按照編號從小到大依次順時針圍成一個圓圈,從第一個小朋友開始從 111 報數,依次按照順時針方向報數(加一),報 mmm 的人會離開隊伍,然後下一個小朋友會繼續從 111 開始報數,直到只剩一個小朋友爲止。
輸入格式
第一行輸入倆個整數,nnn,mmm。(1≤n,m≤10001 \leq n,m \leq 10001≤n,m≤1000)
輸出格式
輸出最後一個小朋友的編號,佔一行。
樣例輸入
10 5
樣例輸出
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
queue <int> q;
void a(int n,int m)
{
int b[1002],p=0;
if(n==1)
{
printf("%d",q.front());
return ;
}
for(int i=1;i<=m;i++)
{
if(i==m)
{
q.pop();
a(n-1,m);
}
b[++p]= q.front();
q.pop();
q.push(b[p]);
}
}
int main(int argc, char *argv[])
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
q.push(i);
}
a(n,m);
return 0;
}