NOIP2017模拟赛 senior 6.29 T1 码灵鼠(A)

NOIP2017模拟赛 senior 6.29 T1 码灵鼠(A)

Description

码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子。这天,ta在研究一个神奇的数列,这个数列是这样的:
a0 = 1
an = ai + aj   (n>=1, i,j均在[0,n-1]内均匀随机)
Ta想知道对于给定的n,an的期望值是多少,你能告诉ta吗?
出于ta对整数的热爱,你只需要输出答案向下取整后的值
 

Input

一个整数T,表示数据组数
每组数据一行,包括一个整数n

Output

一个整数E(an),

这个码灵鼠难道就是传说中的洋芋= =(手动滑稽)

不过他的问题很高大上啊,居然问我随便一个n的期望是多少,相当有深度。

那么这个问题我们怎么解决呢?我们可以随便取之前的几个数来推理一下:

         对于a0直接等于1就不说了吧。

         a1 = 2;

         a2 = 3;

         a3 = 4

         ……

         an = n+1;

         这样的推导能给我们一个大致的思路对吧。

         那么我们是否能够证明我们的推导是正确的呢:

结论:an = n + 1

下面归纳地进行证明。

对于n = 0,n = 1,有a0 = 1,a1 = 2,满足an = n + 1。

当n > 1时:

an = E(ai + aj),fori,j∈[0,n)

an = E(ai)+ E(aj),fori,j∈[0,n)

an = 2E(ai),fori∈[0,n)

E(ai)=(∑0~n-1(ai))/ n = n(n + 1)/ 2n = (n + 1)/2

∴ an = n + 1

哇,非常严密的论证!所以说,推

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 #define INT_MAX_ 0x7fffffff
 7 #define LONG_MAX_ 0x7fffffffffffffffll
 8 #define pi acos(-1)
 9 #define N 10010
10 #define M 10010
11 using namespace std;
12 
13 inline long long read()
14 {
15     long long data=0,w=1;
16     char ch=0;
17     while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();
18     if(ch=='-') w=-1,ch=getchar();
19     while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();
20     return data*w;
21 }
22 
23 inline void write(long long x)
24 {
25     if(x<0) putchar('-'),x=-x;
26     if(x>9) write(x/10);
27     putchar(x%10+'0');
28 }
29 
30 long long T,n;
31 
32 int main()
33 {
34     freopen("A.in","r",stdin);
35     freopen("A.out","w",stdout);
36 
37     T = read();
38     while(T--)
39     {
40         n = read();
41         write(n+1);
42         putchar('
');
43     }
44 
45     return 0;
46 }

出来就是这么简单!!

原文地址:https://www.cnblogs.com/sin-mo/p/7230823.html