题目描述
编号从1到N的小朋友们围成了一圈。现在从1号小朋友开始报数,每个报出3的小朋友退出圈子,报3的后一位小朋友从1开始重新报数。那么,最后剩下的那一位会是谁呢?
输入
输入N的值。
输出
输出留在圈里的最后一位小朋友的编号。
样例输入 Copy
3
样例输出 Copy
2
#include <iostream> #include <list> using namespace std; int main(){ int n; cin >> n; list<int> ls; for(int i = 1; i <= n; i++){ ls.push_back(i); } int count = 0; list<int>::iterator it = ls.begin(); while(ls.size() != 1){ count++; if(it == ls.end()){ it = ls.begin(); } if(count % 3 == 0){ it = ls.erase(it); count = 0; } else{ it++; } } cout << ls.front(); return 0; }