读书人

认为自己很聪明的请进,该怎么处理

发布时间: 2012-01-28 22:06:13 作者: rapoo

认为自己很聪明的请进
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 关于这样的题目我有一个程序,可是似乎逻辑有问题,谁能看懂程序意思并找出问题?(程序写的不好所以比较难看明白)
public class Test37 {

public static void main(String[] args) {
int i,y,m=0;
i = Integer.parseInt(args[0]);
for(int x=1;x<i+1;x++){
y = x;
while(i!=2&&x%3!=0){
x = i%3+x;
i = i-i/3;
if(i==2&&(x+2)%3!=0)
System.out.println(y);
}
}
}

}

[解决办法]
如果是josephsus,不用那的代,concrete mathematics上有介...
public static void josephsus(int n) {
int re = 1;
for (int i = 0; i < Integer.bitCount(n) ; ++i) {
re <<= 1;
}
System.out.println(re - 1 + " survived.");
}
但主的意思好像不是josephsus

读书人网 >J2SE开发

热点推荐