竞赛
考级
#include <bits/stdc++.h> using namespace std; const int qmaxzie=1000000; int q[1000010]; int head,tail; void init(){ head=tail=0; } void push(int x){ tail=(tail+1)%qmaxzie; q[tail]=x; } void pop(){ head=(head+1)%qmaxzie; } int front(){ return q[(head+1)%qmaxzie]; } int beck(){ return q[tail]; } bool empty(){ return head==tail; } int size(){ return (tail+qmaxzie-head)%qmaxzie; } void clear(){ head=tail; } int main(){ init(); int n,k; cin>>n>>k; for(int i=0;i<n;i++){ push(i); } while(size()!=1){ for(int i=1;i<k;i++){ push(front()); pop(); } pop(); } cout<<front(); return 0; }
我们是中国人
#include <iostream> using namespace std; int josephus(int n, int m) { int pos = 0; // 最后剩下的人的位置 for (int i = 2; i <= n; ++i) { pos = (pos + m) % i; } return pos; } int main() { int n, m; cin >> n >> m; cout << josephus(n, m) << endl; return 0; }
————————————————