当前位置:首页 > 题解目录 > 正文内容

【题解】约瑟夫问题2

亿万年的星光3年前 (2021-12-04)题解目录4330

【题目描述】

M个人围成一圈,每分钟相邻的两个人可以交换位置(只能有一对交换)。求使M个人的顺序颠倒(即每个人左边相邻的人换到右边,右边相邻的人换到左边)所需的最少时间(分钟数)。

【输入描述】

   第一行为测试数据的组数n,以后n行中每行为一个小于32767的正整数,表示M

【输出描述】

对于每组测试数据,输出一个数,表示最少需要的分钟数。

【样例输入】

3
4
5
6

【样例输出】

2
4
6

最原始的约瑟夫问题请点击这里 


【题目分析】

    此题属于找规律题,规律推导过程如下:

  • 首先一个人不需要交换,至少两个人

  • 必须相邻的人交换

  • 只有两个人时,颠倒两个人只需要一次

  • 有三个人时,答案是2


  • 当有四个人时, 这样是需要交换3次。

    但是实际上来说,还有更次数更少的交换方式,比如下面这样: 


    这样的话,我们只需要移动两次就可以了。

  • 同理,继续找规律,


  • 人数需要交换的次数
    21
    32
    42
    54
    66
    7
    9

【参考答案】

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int x,n;
    cin>>n;
    while(n--)
    {
        cin>>x;
        if(x%2==0)
        {
            cout<<(x/2)*(x/2-1)<<endl;
        }
        else
        cout<<(x-1)*(x-1)/4<<endl;
    }
 }


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】选班委

【题目描述】小 T 和他的小伙伴们到 CZ 中学的创新实验班报到后的第一件事就是选班委,班主任 R 老师走上讲台宣布了选举办法,首先让全班 40 位同学依次上讲台做自我介绍,然后按照 职位一个一个依次...

【题解】光荣的梦想

【题目描述】Prince对他在这片大陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平...

【题解】亲戚

【题目描述】若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是...

【题解】取余(2019青岛市程序设计竞赛)

【问题描述】给你n个正整数a1,a2,..,an。求(a1*a2*..an)%10007的值。【输入】第一行,n,表示整数的个数。第二行,n个用空格隔开的正整数。【输出】一个整数,(a1*a2*..a...

【题解】车辆管理

【题目描述】交通管理局长氓氓现在需要一个管理汽车的系统,每一辆汽车都有许多信息需要去记录。 首先,每一辆汽车都有一个独一无二的车牌号 S,车牌号由 7 个字符组成。 然后,对于每一辆车要记录它的排...

【题解—深搜】马走日

【题解—深搜】马走日

【题目描述】马在中国象棋以日字形规则移动。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。【输入】第一行为整...