递归的实现————选大王(约瑟夫环)
时间限制 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)); } } }