1214 圆桌会议 有意思的数论

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1214 圆桌会议 有意思的数论相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
http://acm.hdu.edu.cn/showproblem.php?pid=1214

不得不佩服杭电里的题确实新颖。

题意: 是这样的让这个圆翻转一下,问其最小的步数
在这里插入图片描述
圆圈不好想,那么我们先用一条线来想。
在这里插入图片描述
这不就是一个冒泡排序,问排序数字移动的次数么?

那么圆圈该如何移动? 其实是一样的不过我们要分两段,分别的移动。
原因是这样的:
在这里插入图片描述
我们粗略的看成 n x n 假如 n=5 则sum=5x5=25
如果我们分成两段 sum=2x2+3x3=13 步数明显的要少。
至于分3段等其它是不可以的,不信的话你模拟一下,3段 反转后 顺序不对。
故只能分两段。
那么问题就来了,如何的分成两段呢? 答案是接近平均最好。
设分成a,b两段,b=n-a,则总次数为:
在这里插入图片描述

#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
	int n;
	while(cin>>n)
	{
		int a=n/2;
		int b=n-a;
		cout<<a*(a-1)/2+b*(b-1)/2<<endl;
	}
	return 0;
}

以上是关于1214 圆桌会议 有意思的数论的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1214 圆桌会议

HDU1214 圆桌会议数学

HDU-1214的题解

PAT 数列的片段和简单数论

UESTC 电子科大专题训练 数论 E

在 FreeSWITCH 中记录所有会议腿