报数字(约瑟夫环问题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报数字(约瑟夫环问题)相关的知识,希望对你有一定的参考价值。

Description

佳佳和幼儿园里的小朋友经常一起玩一个游戏:N个小朋友坐成一圈,从第一个小朋友开始报数,从1开始依次报,每个报到M的小朋友要起来表演节目,然后那个小朋友从圈里出去,接下来的小朋友继续从1开始。直到只剩下最后一个小朋友。佳佳一点也不喜欢自己表演,所以他想知道的是,他坐在哪个位置,才能一直坚持到最后呢?

 

Input

输入包括多组数据,每组数据是两个整数N,M(N,M<=1000000),输入以0 0结束

 

Output

对每组输入数据,输出佳佳坐的位置

 

Sample Input

3 1
3 2
0 0

 

Sample Output

3
3
 
代码:
#include <iostream>
int main(){
  int n,m,i,l;
  while(std::cin>>n>>m){
    if(n==0&&m==0)
      break;
    l=0; 
    for(i=2;i<=n;++i)
      l=(l+m)%i;
    std::cout<<l+1<<std::endl;
  }
}

以上是关于报数字(约瑟夫环问题)的主要内容,如果未能解决你的问题,请参考以下文章

约瑟夫环问题

自杀环——约瑟夫环

使用循环链表实现约瑟夫环(围圈报数问题)

约瑟夫环问题(100围坐一圈报数,报3出圈)

约瑟夫环-公式递推法

用循环链表解决约瑟夫环的问题