0
点赞
收藏
分享

微信扫一扫

A - 约瑟夫环

南陵王梁枫 2022-01-24 阅读 82
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
using namespace std;
int all, k;
int YSFloop(int n, int m, int target);
//分别表示总人数,数到第几出局,第几出局的人,
//这题要求只剩一个人,所以最后一个参数不要也罢
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> all >> k;
	cout << YSFloop(all, k, all) + 1;
//由于取模会出现比递推值少1的情况(比如10%10=0,而他本应回到环首,编号为1),所以+1
	return 0;
}
int YSFloop(int n, int m, int target) {
	if (target == 1) {
		return (m + n) % n;//当最后一个人被淘汰时,用这一轮的编号求它的初始编号
	}
	return (YSFloop(n - 1, m, target - 1) + m) % n;
}
#include <cstdio>
using namespace std;
#define maxn 1000006
int f[maxn];
int n,k;

int main()
{
    scanf("%d%d",&n,&k);
    for (int i=2;i<=n;i++)
        f[i]=(f[i-1]+k) % i;
    printf("%d",f[n]+1);
    return 0;
}

 

举报

相关推荐

(约瑟夫环)

约瑟夫环

链表:约瑟夫环

约瑟夫环问题

22 约瑟夫环2

0 条评论