约瑟夫问题 java代码

来源:互联网 发布:godaddy 域名证书生成 编辑:程序博客网 时间:2024/05/16 12:28

1:约瑟夫问题


  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。

输入
输入包含两个整数,第一个是n,第二个是m (0 < m,n <=300)。
输出
输出包含一行,即最后猴王的编号。
样例输入
12 4
样例输出
1




import java.io.*;import java.util.*;public class Main {public static void main(String args[]) throws Exception {Scanner cin = new Scanner(System.in);int a = cin.nextInt(), b = cin.nextInt();int[] arr1 = new int[a];int cnt = 0;int index = 0;int i = 0;while (cnt < a - 1) {if (arr1[i % a] == 1) {i++;i %= a;continue;} else {if (index == b - 1) {cnt++;index = 0;arr1[i] = 1;} else {i++;i %= a;index++;}}}for (int j = 0; j < arr1.length; j++) {if (arr1[j] != 1)System.out.println(j + 1);}}}



1

1

0 0