猴子挑大王问题
问题描述:
一些人,围成一圈123报数,报到3的人退出,求最后一个人是几号
解答:NUM是总人数
1 #include <iostream> 2 #define NUM 5 3 using namespace std; 4 5 int n[NUM]; 6 int main() { 7 8 int index=1; 9 int totalLast=NUM; 10 int demo=0; 11 for(int i=0;i<NUM;i++) 12 n[i]=1; 13 while(totalLast!=1) 14 { 15 if(n[demo]==0) 16 { 17 demo++; 18 if(demo==NUM) 19 demo=0; 20 }else 21 { 22 23 if(index==3) 24 { 25 n[demo]=0; 26 index=0; 27 totalLast--; 28 } 29 //cout<<"debug :"<<n[demo]<<endl; 30 demo++; 31 if(demo==NUM) 32 demo=0; 33 index++; 34 } 35 36 } 37 38 for(int i=0;i<NUM;i++) 39 { 40 if(n[i]!=0) 41 cout<<i+1<<endl; 42 } 43 return 0; 44 }
程序宅男