最后一种可自定义总人数与循环数的大小噢
/**19. 据说著名犹太历史学家Josephus有过以下的故事:
* 在罗马人占领乔塔帕特后,39 个犹太人与Josephus
* 及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,
* 于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,
* 每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
* 然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),
* 并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。
* 这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。
* 问题是,给定了和,一开始要站在什么地方才能避免被处决。
* Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,
* 于是逃过了这场死亡游戏。*/
方法一:把五的倍数存到数组a[]里面;最后比较元素大小,输出a[]中最大的元素。
package text;
public class Yue {
public static void main(String[] args){
int i;
int []a=new int[12];
int max=0;
for(i=0;i<12;i++)
{if ((i+1)%5==0)
a[i]=i+1;
if(a[i]>max)
max=a[i];
}
System.out.println("最大的出局的号码是"+max);
}
}
方法二:既然要求最大的号码,就将整除循环的开始定在12,从上面筛选。
package text;
public class Yue3 {
public static void main(String[] args) {
int a=12;
while(a>0) {
if(a%5.0==0)
break;
a--;
}
System.out.println("最大的号码为"+a);
}
}
方法三:方法二的进阶版:即可以自己定义输入的数字为多少:
package text;
import java.io.*;
public class Yue3 {
public static void main(String[] args) {
String str;
int a;
int b;
try {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//那啥.......考来的,有了它才可以像输入啥就输入啥
System.out.println("请输入参加游戏的总人数:");
str=in.readLine();//输入的类型是字符类型的
a=Integer.parseInt(str);//需要把字符类型的变量转化成整形赋值给a
System.out.println("请输入参加游戏的循环数:");
str=in.readLine();
b=Integer.parseInt(str);
while(a>0) {//从最大的数字开始循环
if(a%b==0)
break;
a--;
}System.out.println("最大的号码为"+a);
}catch (IOException e) {
}
}
}
336

被折叠的 条评论
为什么被折叠?



