先上题目吧
有100个人围成一个圈, 从1开始报数,报到14的这个人就要退出。 * 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
代码:
package com.itheima2.com;
public class Test10
{
/**
* 有100个人围成一个圈, 从1开始报数,报到14的这个人就要退出。
* 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
*/
static int count = 0;
static int stp = 100;
static int i = 0;
static int[] num = new int[100];
public static void main(String[] args)
{
// 思路:先照样给可以装100人数组;
// 1.里面都保存的是0
// 2.数到一次。我们就把他改成是1。
while (stp != 1)
{
if (num[i] == 1)
{
// 该元素 是否被移除
iOR99();
} else
{
// 没有没移除。
if (count == 14)
{
// 数到第14个人了。
num[i] = 1;// 剔除这个人;
iOR99();
stp--;
count =1; // 计数器归0;
} else
{
iOR99();
count++;
}
}
}
printPer();
}
/**
* 判断当前是否数到了数值的末尾。
*/
public static void iOR99()
{
if (i == 99)
{
i = 0;
} else
{
i++;
}
}
public static void printPer()
{
for (int i = 0; i < num.length; i++)
{
if (num[i] == 0)
{
System.out.println("剩下最后一个人是" + i);
}
}
}
}