zoukankan      html  css  js  c++  java
  • 有17个人围成一圈(编号为0~16),从第 0号的人开始从 1报数, 凡报到 3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号?

    有17个人围成一圈(编号为0~16),从第 0号的人开始从 1报数, 凡报到 3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号?

    void main()
    {
        int a[17] = { 0 };//代表17个人,值为0代表还在,1代表离开
        int baoshu = 1;//当前报数的数字,最多49
        int total = 17;//当前还剩多少人在
        int cur = 0;//17个人的当前人循环到的编号
        while (total!=1)
        {
            if (cur == 17)//说明已经走到下一圈了,需要保证当前人的编号
            {
                cur = 0;
            }
            if (a[cur] == 1)//说明该人已经离开圈子,报数不增加,走向下一人判断
            {
                cur++;
                continue;
            }
            if (baoshu % 3 == 0)
            {
                a[cur] = 1;
                total -= 1;
                
            }
            baoshu++;
            cur++;
        }
        for (int i = 0; i < 17; i++)
        {
            printf("%2d", a[i]);
        }
        system("pause");
    }
  • 相关阅读:
    vijos 1379 字符串的展开
    BZOJ 4597 随机序列
    BZOJ 2303 方格染色
    BZOJ 2654 tree
    BZOJ 4198 荷马史诗
    BZOJ 1555 KD之死
    不重复数字
    Rails
    Train Problem I
    Key Set HDU
  • 原文地址:https://www.cnblogs.com/nfcm/p/6624459.html
Copyright © 2011-2022 走看看