加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SDNU 1263.C语言程序设计教程(第三版)课后习题10.5(约瑟夫环

发布时间:2020-12-16 09:19:58 所属栏目:百科 来源:网络整理
导读:Description 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 Input 初始人数n Output 最后一人的初始编号 Sample Input 3 Sample Output 2 Source Unknown /// /// _ooOoo_ /// o8888

Description

有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

Input

初始人数n

Output

最后一人的初始编号

Sample Input

3

Sample Output

2

Source

Unknown
///
///                            _ooOoo_
///                           o8888888o
///                           88" . "88
///                           (| -_- |)
///                           O  =  /O
///                        ____/`---‘____
///                      .‘  |     |//  `.
///                     /  |||  :  |||//  ///                    /  _||||| -:- |||||-  ///                    |   |   -  /// |   |
///                    | _|  ‘‘---/‘‘  |   |
///                      .-__  `-`  ___/-. /
///                  ___`. .‘  /--.--  `. . __
///               ."" ‘<  `.____<|>_/___.‘  >‘"".
///              | | :  `- `.;` _ /`;.`/ - ` : | |
///                 `-.   _ __ /__ _/   .-` /  /
///         ======`-.____`-.________/___.-`____.-‘======
///                            `=---=‘
///        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
///                      Buddha Bless,No Bug !
///
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <vector>
using namespace std;
#define MAXN 100010
#define ll long long

int n,num = 0,sum = 0,id;
bool sign[1000000+8];

int main()
{
    num = 0,sum = 0;
    scanf("%d",&n);
    for(int i = 0; i < n; i++)
        sign[i] = 1;
    id = 0;
    while(sum < (n - 1))
    {
        if(sign[id])num++;
        if(num == 3)
        {
            sign[id] = 0;
            num = 0;
            sum++;
        }
        id++;
        if(id == n)id = 0;
    }
    for(int i = id; i < n; i++)
        if(!sign[id])
            id++;
        else
            break;
    printf("%dn",id + 1);

    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读