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

【题解】约瑟夫问题2

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

【题目描述】

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;
    }
 }


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

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

分享给朋友:

相关文章

【题解】跳格子

【题目描述】地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能...

第n小质数

【题目描述】蒜头君有一个正整数 n,他想求第 n小的质数。【输入格式】一个不超过 10000的正整数 n。【输出格式】第 n 小的质数。输出...

【题解】零花钱

零花钱(money.cpp) 【问题描述】 商店里有一件玩具,今天你偶然得知:这件玩具在后⾯的n天里每天的定价(价格可能每天都会改 变),你买了这件玩具后可以以当天的价格卖给商店,...

【题解】转换的问题

【题目描述】那么,问题来了:输入一个十进制数N,将它转换成R进制数输出。【输入描述】输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<&...

【题解】导弹拦截

【题目描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导...

求正整数2和n之间的完全数

【题目描述】求正整数2和n之间的完全数(一行一个数)。完全数:因子之和等于它本身的自然数,如6=1+2+3【输入描述】输入n【输出描述】一行一个数,按由小到大的顺序。【输入样例】7【输出样例】6#in...