BNUOJ 53073 【找规律】

萌萌哒身高差

“清明时节雨纷纷,路上行人欲断魂。”

然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯。。。以下是wfy同学的日记:
昨天,何老师告诉我们:明天我们去春游,大家准备好喝的和吃的哦!
大家听了都兴奋起来,有的欢呼,有的鼓掌,开心得不得了。第二天,我们早早地来到学校,迫不及待地上了车,来到了公园。一进门,啊,太美了!公园中有那么多树,有高有矮,有粗有瘦,密密的,在春风吹拂下轻轻摇摆着,像是欢迎我们的到来。公园中有那么多的鲜花,有红有黄,有紫有白,散发着淡淡的清香,闻得我们都醉了。公园的边角上有一条清澈的小河,河水缓缓地流淌着,可以看到水里的鱼儿在快活地游来游去,多自在啊!水草碧绿碧绿的,多新鲜啊!小河的旁边是一片小树林,远远望去一片鲜绿。我们在里面吃东西、做游戏、捉迷藏,玩得疯极了。树林的后面是连绵起伏的小山坡,蜿蜿的真像一条游动的蛇。当然,我觉得公园的天空也很美。它万里无云,一碧如洗,很清澈。小鸟在展翅飞翔,它们形态各异,一会儿上升,一会儿下滑,一会儿吃虫,一会儿在小树林里休息,非常悠闲。快乐时光总是那么短暂,很快,天色就昏暗了。我们依依不舍地上了车,回到了学校,我真希望明年的春天还能再来看看这美丽的公园。
回到学校后,何老师说:请大家排成一排,我们来拍照片啦! 何老师特别喜欢萌的东西,比如**,比如****,等等。
何老师认为,同学们站成一排时,相邻两个同学身高相差越多,这两个同学站在一起越萌。
那么所有相邻两个同学的身高差加起来越大,拍出来的照片就越萌,也就是这张照片的萌力指数。何老师希望拍出来的照片的萌力指数尽可能大。
然而何老师并不是数学老师,而是语文老师。何老师觉得很GG。
何老师只想知道,如果让同学们随便站成一排(站成所有排列的可能性都相等),萌力指数的数学期望是多少。
聪明的我一下子就算出了答案,然后何老师就奖励了我一个很萌的礼物。今天真的好开心。

BNU ACM队共有n名同学,身高分别是1~n,聪明的你能计算出何老师想要的数学期望吗?

Input

第一个是一个正整数T(T ≤ 20),表示测试数据的组数,
每组测试数据只有一行,包含一个整数n(2 ≤ n ≤ 100)。

Output

对于每组测试数据,输出一行,包含一个实数,表示萌力指数的数学期望值,要求相对误差不超过10-9
也就是说,令输出结果为a,标准答案为b,若满足 ,则输出结果会被认为是正确答案。

Sample Input

2
2
3

Sample Output

1.000000000000
2.666666666667

Hint

对于第二组样例,所有可能的排列是[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1],所以答案是
2 + 3 + 3 + 3 + 3 + 2 6 2+3+3+3+3+2 \over 6 62+3+3+3+3+2

Solution

有一组1~n的数据,问前n个数全排列得到的所有数列中,所有相邻两个数的差的总和除以数列个数是多少。手算了半天还算错了,最后只能程序打表找规律。最后得到的规律是,答案约分后,分子为n2-1,分母为3

打表代码

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

int main() {
	int a[109];
	for( int i = 0; i < 100; i++ ) {
		a[i] = i + 1;
	}
	int n;
	cin >> n;
	for(int k=1; k<=n; ++k) {
		double num= 0;
		do {
			for( int i = 1; i < k; i++ ) {
				num += fabs(a[i] - a[i-1]);
			}
		} while(next_permutation(a,a+k));
		double m = 1;
		for(int l = 1; l <= k; ++l) {
			m *= l;
		}
		printf("分子 : %-15.0lf 分母 : %-15.0lf 商 : %lf\n",num,m,num/m);
	}
	return 0;
}

AC_Code

#include<iostream>
using namespace std;

int t,n;
double fenzi,fenmu,ans;

int main() {
	cin >> t;
	while(t--) {
		cin >> n;
		fenzi = n * n - 1;
		fenmu = 3;
		ans = fenzi / fenmu;
		cout << ans << endl;
	}
}

Source

BNUOJ 53073 萌萌哒身高差

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值