有100个人围成一个圈,从1开始报数,报到14的这个人就要退出, 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
2016-02-19 20:10
495 查看
public class Test {
public static void main(String[] args) {
// 创建一个ArrayList来存储所有的人对应的数字
ArrayList<Integer> list = new ArrayList<Integer>();
// 使用for循环,向集合中添加对应的数字
for (int i = 1; i <= 100; i++) {
list.add(i);
}
// 定义一个数字,来记录报的数
int count = 1;
// 循环所有的数字,通过下面条件删除,当集合中只有一个元素时候,结束循环
for (int i = 0; list.size() != 1; i++) {
// 当循环到末尾,即i=list.size(),需要重新开始数,所有把i=置为0,重新开始数数
if (i == list.size()) {
i = 0;
}
// 当数数时候,数到了14,就把14从集合中删去
if (count % 14 == 0) {
list.remove(i--);
}
// 继续开始往下数数,所以count继续加1
count++;
}
// 输出集合中最后剩下的元素,即最后剩下的人
System.out.println(list.get(0));
}
}
public static void main(String[] args) {
// 创建一个ArrayList来存储所有的人对应的数字
ArrayList<Integer> list = new ArrayList<Integer>();
// 使用for循环,向集合中添加对应的数字
for (int i = 1; i <= 100; i++) {
list.add(i);
}
// 定义一个数字,来记录报的数
int count = 1;
// 循环所有的数字,通过下面条件删除,当集合中只有一个元素时候,结束循环
for (int i = 0; list.size() != 1; i++) {
// 当循环到末尾,即i=list.size(),需要重新开始数,所有把i=置为0,重新开始数数
if (i == list.size()) {
i = 0;
}
// 当数数时候,数到了14,就把14从集合中删去
if (count % 14 == 0) {
list.remove(i--);
}
// 继续开始往下数数,所以count继续加1
count++;
}
// 输出集合中最后剩下的元素,即最后剩下的人
System.out.println(list.get(0));
}
}
相关文章推荐
- markdown学习2:Markdown编辑器之比较
- Java中print、printf、println的区别
- poj 3126 Prime Path
- LevelDB简介及入门手册
- 深入浅出理解Paxos算法
- ZOJ1074
- 深入浅出理解Paxos算法
- BZOJ1468 Tree 点分治入门练习题
- Hdu 1575 Tr A【矩阵快速幂】
- Service服务(非绑定与绑定)
- iOS学习笔记(一)---NSMutableString可变数组
- listView或者scrollView中包含gridView或listView的解决方法
- BZOJ2152 聪聪可可 点分治入门
- 5、Maven的传递性依赖的问题
- CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解
- 计算x转化成二进制包含1的数量
- java的Frame和JFrame中的paint方法区别
- 几种malloc实现原理 ptmalloc(glibc) && tcmalloc(google) && jemalloc(facebook)
- stroop效应
- 1.1 创造性和动机