问:有17个人围成一圈(编号0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止,问此人原来的位置是多少号?

 
int [] people = new int[17];
    
int lastPeople = 0;
    
public void getTheLastPeople(){       
        
for(int i = 0; i < people.length; i++){
            people[i] 
= i+1;
        }

        
int count = 0;
        
int countLast = 0;
        
int j = 0;
        
while(true){
            
for(j = 0; j < people.length; j++){               
                
if(people[j] != 0){
                    count
++;
                    people[j] 
= count;
                    System.out.println(
"people[" + j + "] = " + people[j]);
                    
if (people[j] % 3 == 0{
                        people[j] 
= 0;
                        countLast
++;
                        
if(countLast == 17){
                            lastPeople 
= j;
                            
return;
                        }

                    }

                }

            }
           
        }

    }
 posted on 2009-08-13 23:52  Stephen Zhang  阅读(428)  评论(0编辑  收藏  举报