0
点赞
收藏
分享

微信扫一扫

A - 约瑟夫环

南陵王梁枫 2022-01-24 阅读 81
#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",
for (int i=2;i<=n;i++)
f[i]=(f[i-1]+k) % i;
printf("%d",f[n]+1);
return 0;
}

 

举报

相关推荐

0 条评论