C. DS循环链表—约瑟夫环 (Ver. I - B)

题目描述

N个人坐成一个圆环(编号为1 - N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。

例如:N = 3,K = 2,S = 1。2号先出列,然后是1号,最后剩下的是3号。

测试数据有多组,

每组包括3个数N、K、S,表示有N个人,从编号为S的人开始,数到K出列。

输入

测试数据有多组

每组包括3个数N、K、S,表示有N个人,从第S个人开始,数到K出列。(2 <= N <= 10^3,10^3 < K <= 10^9,  1 <= S <= N)

输出

出列的人的编号

输入样例1:

13 3 1
3 2 1

输出样例1:

3 6 9 12 2 7 11 4 10 5 1 8 13 
2 1 3 

AC代码:

#include <iostream>
using namespace std;
class node
{
public:
    int data;
    node* next;
    node():data(0),next(nullptr){}
};

class linklist
{
    int len;
    node* head;
public:
    linklist()
    {
        head=new node;
        head->data=1;
        head->next=head;
    }
    void create(int n)
    {
        node* tail=head;
        for(int i=2;i<=n;i++)
        {
            node* p=new node;
            p->data=i;
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值