时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从 1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。
现在告诉你 n 和 m,请帮忙求出哪一只猴子能当大王。

输入描述:
输入包含多组数据。
每组数据包含两个正整数 n 和m(1≤ m < n ≤ 10000)。

输出描述:
对应每一组输入,输出猴王的编号 i(1≤i≤n)。

输入例子:
7 3
8 3

输出例子:
4
7

这道题对我而言,最大的几个收获是:
1.static的使用,一般我都不加上,现在发现这个是需要加上的;
2.
约瑟夫环的定式
int r = 0;
for (int i = 2; i <= n; i++) {
r = (r + m) % i;
}
return r + 1;

import java.util.Scanner;
public class Main{
    public static int theing(int n,int m){
         int r = 0;
       for (int i = 2; i <= n; i++) {
           r = (r + m) % i;
          }
         return r + 1;
     }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int n = in.nextInt();
            int m = in.nextInt();
            System.out.println(theing(n,m));
        }
    }
}