当前位置: 代码迷 >> 综合 >> 1326【出圈】
  详细解决方案

1326【出圈】

热度:10   发布时间:2023-12-09 21:01:49.0

题目描述

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。

输入

输入多行,每行2个数,分别表示n和m.

输出

计算每一行中最后剩下这个人的编号.

在用传统方法比较麻烦的时候,考虑用数学方法简化。

代码如下:

#include <stdio.h>
#include <stdlib.h>#define N 100int chuquan(int n,int m)
{if(n==1)return 0;elsereturn (chuquan(n-1,m)+m)%n;
}
int main()
{int n,m;int i;while(~scanf("%d%d",&n,&m)){i=chuquan(n,m)+1;printf("%d\n",i);}return 0;
}