出圈子问题

原创 2017年08月13日 13:34:46

题目描述:
有n个人围成一圈,按顺序排号 从第一个人开始报数(从1到3报数) 所有报到3的人退出圈子 问最后留下来的是第几个人
我们可以将这个题目看成以一类题目:
n个人围成一圈 从第一个人开始数 数到N的人被淘汰 问最后剩哪个人(n和N由键盘输入)

/**
 * 设没有被淘汰的人的状态为 0  淘汰了的人的状态为 1 
 */

#include <iostream>
#include <cstdio>
using namespace std;


int main() {
    int n, N;
    cin >> n >> N;
    int sum = 0, num = 0, h[n] = {0};//对数组赋初值为0


    for ( int i = 0; sum != n - 1; i++ ){//一直循环直到只剩一个人在圈子里面 
        if ( !h[i % n] ) { //如果h[i%n]为0则继续数 (注意对人数取余  防止越界)
            num++;
            if ( !(num % N) ) { //数到数字N的时候令其等于1(出圈子) 
                h[i % n] = 1;
                sum++;
            }
        }
    }

    for ( int i = 0; i < n; i++ ) {
        if ( h[i] == 0 ) {
            printf("%d\n", i  + 1);//输出最后剩下的一个在圈子里面的下标加一(因为是第几个人  从1开始)
        }
    }
    return 0;
}
版权声明:转载请声明出处,谢谢!

相关文章推荐

创业人的起点和圈子问题

对这个问题有些好奇,所以收集了些实例: 借雷军的金字招牌 我是在2003年认识雷军的,到今天已经十年了。   口袋购物王珂:移动电商的未来   http://cpmq.cec-...

为何 G+ 的圈子是进步?

刚在ifanr.com上看到一个非常有意思的文章, 特转来分享.   原文link: http://www.ifanr.com/47332#comment-74938音量学生时代,你在教室后面给同桌的...

圈子圈套2

  • 2008-06-15 11:22
  • 1.36MB
  • 下载

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

问题:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到3的人退出圈子,下一个人从1开始报数,报到3的人退出圈子。如此下去,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号思路:用...

圈子圈套1 exe 格式

  • 2009-07-04 14:35
  • 1.31MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)