首页 > 约瑟夫环
头像 Tender^
发表于 2021-10-03 14:19:00
#include<bits/stdc++.h> using namespace std; int main(){ int n,k,m; cin>>n>>k>>m; int a[105]={0}; //数组元素为0表示未被淘 展开全文
头像 白白白e
发表于 2024-04-05 23:24:11
n个人围个圈,k是个起始位置,点到m个,那人出去 下一轮k是出去那人的后面一个。 也就是说让k一直循环就行了。 由于固定数组遍历会遍历到0这些不在队中的人,需跳过他们,从1这些在队中的人开始 #include<stdio.h> int main(){ int n,k,m; 展开全文
头像 pyds
发表于 2022-11-09 11:08:55
题目描述 n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,请你求出大王的编号。 输入描述: 输入一行包 展开全文
头像 CodingCaius
发表于 2022-11-23 08:45:31
">#include<algorithm> using namespace std; int n,k,m; int main() { cin>>n>>k>>m; int ops=0; for(int i=2;i<=n 展开全文
头像 Hanson_Zhong
发表于 2022-04-16 14:23:14
https://ac.nowcoder.com/acm/contest/19306/1003 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 n个人(0,1,2,3,4...n-1 展开全文
头像 爱吃香菜的你选钝角
发表于 2025-01-04 21:59:27
#include<stdio.h> int josephus(int n,int k,int m){//n个人,编号为k     int result=0;//初始时,只有一个人结果是0 &nbs 展开全文
头像 小卢code
发表于 2022-01-22 12:33:03
#include<bits/stdc++.h> using namespace std; int main() { int n,k,m; cin>>n>>k>>m; int a[105] = {0},count = n; 展开全文
头像 GB279824
发表于 2025-06-07 20:59:53
n,k,m = map(int,input().strip().split()) l = list(range(n)) while n>1: k = (k+m-1)%n l.pop(k) n -= 1 print(l[0])
头像 青笙
发表于 2021-12-13 21:00:35
解决此题的关键是如何将淘汰的人踢出,这是关键所在。我们可以先用一个数组,让i的值求余,这样就可以对数组进行无穷次的遍历,我们可以将报到某个数的人淘汰掉,其值设为1,代表出局,值为0代表未出局,依次遍历到倒数第二个人出局,那么最后一个人就是游戏的胜利者,即可解决此题。 import java.util 展开全文
头像 牛客458374228号
发表于 2020-12-08 22:53:45
题目描述n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,请你求出大王的编号。 输入描述:输入一行包含三个整 展开全文