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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hero_king 中级黑马   /  2016-6-2 22:40  /  1429 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 100个人围成一个圈报数,报到14的同学被淘汰,他的下一位同学补上他的位置并从1开始重新报数,以此类推
* 请问最后剩下的一名同学是原来100人中的第几个?
实在是没有思路。。。做了半天做不出来

6 个回复

倒序浏览
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. /**
  5. *
  6. *
  7. * 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
  8. *  然后其他人重新开始,从1报数,到14退出。 问:最后剩下的是100人中的第几个人?
  9. *
  10. * @author Venus
  11. *
  12. */
  13. public class Test10 {
  14.         public static void main(String[] args) {
  15.                 // 创建一个集合all,集合中的元素为1,2,3,……,100,代表所有人
  16.                 List<Integer> all = new ArrayList<Integer>();
  17.                 for (int i = 1; i <= 100; i++) {
  18.                         all.add(i);
  19.                 }

  20.                 // 下面的代码表示循环99次,每次从集合里删除一个元素,代表退出的那个人的编号
  21.                 // i表示退出的那个人在all集合中的下标
  22.                 int i = 0;
  23.                 // 循环99次
  24.                 for (int n = 1; n < 100; n++) {
  25.                         // 每次循环时,求得将要退出的人在集合中的下标
  26.                         i = (i + 13) % all.size();
  27.                         // 将集合中代表该人的元素删除
  28.                 //        System.out.println(all.get(i));
  29.                         all.remove(i);
  30.                 }

  31.                 // 循环99次,删除99个人,剩下的最后一个
  32.                 System.out.println("最后剩下的是第 " + all.get(0) + " 个人");


  33.         }

  34. }
复制代码


回复 使用道具 举报

兄弟你太棒了。。。
回复 使用道具 举报
回复 使用道具 举报

互相学习.
回复 使用道具 举报
6666666666666
回复 使用道具 举报
第一眼就想到了集合!不过没二楼快{:2_43:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马