Run ID:27633

提交时间:2022-06-07 11:31:00

#include <iostream> using namespace std; //mark标记当前下标编号的猴子有没有出圈 bool mark[3001] = {} ; int main() { int n , m ; cin >> n; int k = n-2 ; //k为所要出圈猴子数量 int i = 0 ; //i为遍历mark数组 int flag = 0,temp = 0 ; //所报数字 while(k) { temp = 0; for(i = 0; i < n; i++) { if(!mark[i]) { //如果当前猴子未出圈 temp++ ; //报数++ if(temp % 3 == 0) //如果报中m了,出圈 { //cout<<i+1<<endl; mark[i] = !mark[i] ; k-- ; } } } if(k == 0) { flag = 1; break; } temp = 0; for(i = n-1; i >= 0; i--) { if(!mark[i]) //如果当前猴子未出圈 { temp++ ; //报数++ if(temp % 3 == 0) //如果报中m了,出圈 { //cout<<i+1<<endl; mark[i] = !mark[i] ; k-- ; } } } } // for(i = 0;i < n;i++) // { // cout <<mark[i]<<" "; // } if(flag == 1) { i = n-1 ; while(mark[i]) i--; cout << i+1 << endl ; } else { i = 0 ; while(mark[i++]) ; cout << i << endl ; } return 0; }