约瑟夫环问题

有 $n$ 个人围成一圈,从第 $1$ 个人开始报数,报到 $k$ 的人出列,问最后出列的人是几号。


#include <bits/stdc++.h>
using namespace std;
using ll = long long;


int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    ll n;
	cin >> n;
    const int k = 3;
    
	ll res = 0;
	for (ll i=2;i<=n;i++){
		res = (res + k) % i;
	}

	//转换成1-based
	cout << res+1 << '\n';
    return 0;
}
posted @ 2026-04-14 01:10  kzssCCC  阅读(5)  评论(0)    收藏  举报