列表

详情


NC22227. 约瑟夫环

描述

n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,
请你求出大王的编号。

输入描述

输入一行包含三个整数n,k,m

1<=n<=100,1<=k<=n-1,1<=m<=100

输出描述

输出一个整数

示例1

输入:

5 1 2

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 420K, 提交时间: 2023-06-29 04:20:13

#include<iostream>
int main(){int n,k,m,i=1,s=0;std::cin>>n>>k>>m;while(i<=n)s=(s+m)%i++;std::cout<<(s+k)%n;}

pypy3 解法, 执行用时: 125ms, 内存消耗: 26008K, 提交时间: 2021-10-12 18:09:59

n,k,m = map(int,input().split())
res = 0
for i in range(2,n+1):
    res = (res + m) % i
print((res+k )%n)

Python3 解法, 执行用时: 38ms, 内存消耗: 4676K, 提交时间: 2021-12-22 10:16:04

n,k,m=map(int,input().split())
s=k
for i in range(1,n+1):
    s=(s+m)%i
print((s+k)%n)

上一题