Rainbow的信号

提交数: 8, 通过率: 50%, 平均分: 61.25

题目描述:

Freda发明了传呼机之后,rainbow进一步改进了传呼机发送信息所使用的信号。由于现在是数字、信息时代,rainbow发明的信号用N个自然数表示。为了避免两个人的对话被大坏蛋VariantF偷听T_T,rainbow把对话分成A、B、C三部分,分别用a、b、c三个密码加密。现在Freda接到了rainbow的信息,她的首要工作就是解密。Freda了解到,这三部分的密码计算方式如下:
在1~N这N个数中,等概率地选取两个数l、r,如果l>r,则交换l、r。把信号中的第l个数到第r个数取出来,构成一个数列P。
A部分对话的密码是数列P的xor和的数学期望值。xor和就是数列P中各个数异或之后得到的数; xor和的期望就是对于所有可能选取的l、r,所得到的数列的xor和的平均数。
B部分对话的密码是数列P的and和的期望,定义类似于xor和。
C部分对话的密码是数列P的or和的期望,定义类似于xor和。

 

输入格式:

第一行一个正整数N。
第二行N个自然数,表示Freda接到的信号。

输出格式:

一行三个实数,分别表示xor和、and和、or和的期望,四舍五入保留3位小数,相邻两个实数之间用一个空格隔开。

样例输入:

样例输入1
2
4 5

样例输入2
3
1 0 1

样例输出:

样例输出1
2.750 4.250 4.750

样例输出2
0.667 0.222 0.889

提示:

数据范围与约定
对于20%的数据,1<=N<=100。
对于40%的数据,1<=N<=1000。
对于另外30%的数据,N个数为0或1。
对于100%的数据,1<=N<=100000,N个自然数均不超过10^9。

样例解释
样例1共包含四种可能的l、r:
l, r xor和 and和 or和
1,1 4 4 4
1,2 1 4 5
2,1 1 4 5
2,2 5 5 5
以上每一对l、r出现的概率均相同,因此分别对xor和、and和、or和取平均数就是数学期望值。

 

时间限制: 1000ms
空间限制: 256MB