报数字(约瑟夫环问题)

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;
  }
}
posted @ 2017-05-31 17:11  徐源廷  阅读(308)  评论(0编辑  收藏  举报