标签:www break lan problem -- 必须 等于 下标 algo
时间限制: 1Sec 内存限制: 128MB 提交: 3216 解决: 1753
3
2
#include<iostream> #include<algorithm> using namespace std; int main() { int n; cin>>n; int sum=n; int array[1000]; //数组下标全置1,到时候我只用1~n这n个位置,定义一个表示1个数的变量sum,出局就置零,同时sum-1 //当sum等于1,表示只剩一个人时,跳出循环,然后遍历数组找出未出局的那个人 for(int i=1;i<=n;i++) { array[i]=1; } int pos=1; for(int j=1;1;j++) { if(j%3==0)//只要j长到了3的倍数,就会使本次循环中的array[pos]置0 {//判断对3取余等于0(就相当于一直在做每3个数一次的循环) array[pos]=0; sum--; } if(sum==1) { break; } pos++; if(pos>n)//当 指针pos转了一圈,发现自己出界了,赶紧从头开始;注意!pos >n才表示出界 { pos=1; } while(1)//这个循环的目的是使得参选那个3次一循环的array[]必须是未出局的 { if(array[pos]==0) { pos++; if(pos==n+1) { pos=1; } } else { break; } } } for(int i=1;i<=n;i++) { if(array[i]==1) { cout<<i; break; } } return 0; }
标签:www break lan problem -- 必须 等于 下标 algo
原文地址:https://www.cnblogs.com/wildness-priest/p/11680051.html