认为自己很聪明的请进
题目:有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