每天一到算法题

题目:有一艘海盗船上面有30个海盗,分别为海盗1-30号忽然海盗船撞上了冰山,船上只能留下一个人,船长命令大家循环数数,数到7和7的倍数的人,跳到海里去。

请问最后留下的那个人是第一开始的几号海盗?

分析:

代码:

import java.util.ArrayList; import java.util.List; import java.util.Scanner;

/** * N个人从1到N编号,围城一圈, * 从1开始报数, 数到m时,将m的编号输出,那个船员将会殒命, * 下一个从1再开始报数,直到所有人都出去//由于数的是7或者7的倍数,相当于1234567循环数,数到7就下去 * */

public class Haidao1 { public static void main(String[] args) { List list = new ArrayList(); System.out.println("请输入被困在船上的海盗人数N:"); Scanner sca = new Scanner(System.in); int N = sca.nextInt(); // 提示输入要出圈的数值

System.out.println("请输入要跳下船去的数值M:");

int M = sca.nextInt(); System.out.println("按跳下的次序输出序号:");

//自动装箱这里装入30号 for(int i=0 ;i

//初始化数值用i来记录 int countX=0;//记录数数的数值

while(list.size()!=0)

{ ++i; i

f(i== list.size())

{ i=0; }

++countX; if(countX==M){//输出 System.out.print(list.get(i)+ " "); list.remove(i); countX=0; i--;//修正 } } System.out.println("输出序号的最后一个就是最后生还的人");} }

你可能感兴趣的:(每天一到算法题)