假设一共有N只猴子。从第一只猴子开始报数。其中报到数字n的猴子离开。然后下一只猴子仍然从一开始报起。。当报完最后一只猴子时。第一只猴子接着最后一只猴子报数。请问最后留下的猴子是第几只?
例如一共有4只猴子。报到3的猴子离开。
那么首先第3只猴子离开。第4只猴子报1。接着第一只猴子继续报2。第二只猴子报3离开。第四只猴子报1。第一只猴子报2。第四只猴子报3。
结果就是第一只猴子留下。这个问题很简单啊。。希望大家写出最简单的算法啊。。
例如一共有4只猴子。报到3的猴子离开。
那么首先第3只猴子离开。第4只猴子报1。接着第一只猴子继续报2。第二只猴子报3离开。第四只猴子报1。第一只猴子报2。第四只猴子报3。
结果就是第一只猴子留下。这个问题很简单啊。。希望大家写出最简单的算法啊。。
解决方案 »
- java文件读取问题
- 我想在应用程序中加入根据设置好的时间自动启动的功能,不知道怎么解决,请高人指点!
- 跪问怎样实现Java程序的“最终任务”?
- NetBeans下添加 JavaDoc
- 关于日期的菜鸟问题,解决就给分
- 《新手干中学》文本编辑器(附上一些牛人建议及后续改进方向)
- 在JBuilder9里面运行能得到applet画出来的图,但是相应的网页却只有title几个字,没有图,为什么???
- 为什么不能把int类型的加入到Vector中啊??
- 问一个问题:j2sdk1.4和j2sdk1.3的一个小区别?
- 一个关于jtable放置在jscrollpane的问题?
- 麻烦哪位高手帮忙指点小弟一下~~~
- 80分帮我看看这道题目怎么做啊 ?
pos = (((pos + n - 1) % N) == 0) ? N : (pos + n - 1) % N;
Vector v = new Vector();
for (int i = 0; i < N; i++) {
v.addElement("第 " + (i + 1) + " 只猴子剩下了.");
}
while (v.size() > 1) {
v.removeElementAt(pos - 1);
if (pos + n - 2 < v.size()) {
pos = pos + n - 1;
} else {
pos = (pos + n - 2) % v.size() + 1;
}
}
System.out.println(v.elementAt(0));
}