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 }
出来就是这么简单!!