首页 > 试题广场 >

选大王

[编程题]选大王
  • 热度指数:2172 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从 1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。
现在告诉你 n 和 m,请帮忙求出哪一只猴子能当大王。

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


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

输入

7 3<br/>8 3

输出

4<br/>7
import java.util.Scanner;
public class Main {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  while (scanner.hasNext()) {
   int m = scanner.nextInt();
   int n = scanner.nextInt();
   System.out.println(fun(m, n));
  }
  scanner.close();
 }
 private static int fun(int m, int n) {
  int r = 0;
  for (int i = 2; i <= m; i++) {
   r = (r + n) % i;
  }
  return r + 1;
 }
}
发表于 2018-03-29 18:55:34 回复(0)