A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  * 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
  * 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
  *   
  */
public static void main(String[] args) {  
  int s = 0;  
  int m = 14;
  for(int i=2; i<=100; i++) {   
  s = (s+m)%i;
  }  
  System.out.println("最终会留下的人的编号为:" + (s+1));
}
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
不错,顶一下
回复 使用道具 举报
代码很简单,思想挺难的!顶一个!
回复 使用道具 举报
package cn.itcast.demo;

import java.util.ArrayList;

public class Demo33 {

        /**
         * @param args
         * 假如是8个人  每数三下就杀一个人 ,这就是杀人游戏约瑟夫环吧 。
         */
        public static void main(String[] args) {
                int num = getLuklyNum(8);
                System.out.println("最后剩下的数字是"+num);//7

        }

        private static Integer getLuklyNum(int num) {
                int count = 1;             //计数器
                ArrayList<Integer> list = new ArrayList<>();
                for (int i = 1; i <=num; i++) {                         //将数字12345678存入集合
                        list.add(i);
                }
                for (int i = 0;list.size()!=1; i++) {               //从0索引开始遍历集合 当 索引为8的时候重新从0开始
                        if(i==list.size())
                                i=0;
                       
                        if(count%3==0)                         //数3下就要 移除一个元素,索引需--这样才保证每个数字都能 数到
                                list.remove(i--);
                                count++;
                }
                return list.get(0);                       //返回最后剩下的那个 就是0索引的数字 既是存活下来的人
        }

}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
M_______r 发表于 2014-11-11 14:06
package cn.itcast.demo;

import java.util.ArrayList;

真棒!!谢谢!!
回复 使用道具 举报
偶然看到你的贴 不用谢 嘎嘎
回复 使用道具 举报
看不懂求解释啊
回复 使用道具 举报
都是大神级别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马