1. 程式人生 > 實用技巧 >Win10系統使用Gitblit搭建區域網Git伺服器

Win10系統使用Gitblit搭建區域網Git伺服器

前言

多寫寫數學題的題解,說不定就會了呢qwq

題目

HDU

講解

就單純推式子

首先我們要先證明一個性質:

\[\sum_{i=0}^n i*C_n^i=n*2^{n-1} \]

\[S=\sum_{i=0}^n i*C_n^i \]

\[\begin{aligned} 2S&=\sum_{i=0}^n i*C_n^i+\sum_{i=0}^n (n-i)*C_n^{n-i}\\ &=\sum_{i=0}^n i*C_n^i+\sum_{i=0}^n (n-i)*C_n^i\\ &=\sum_{i=0}^n n*C_n^i\\ &=n*\sum_{i=0}^n C_n^i\\ &=n*2^n \end{aligned}\]

所以

\[S=n*2^{n-1} \]

然後我們就可以愉快地推式子啦

\[\begin{aligned} F(n)&=\sum_{i=1}^n i*\sum_{j=i}^n C_{j}^{i}\\ &=\sum_{i=1}^n \sum_{j=1}^i j*C_i^j\\ &=\sum_{i=1}^n i*2^{i-1}\\ &=\sum_{i=0}^{n-1} (i+1)*2^{i} \end{aligned}\]

類似的,我們求出\(2F(n)\)

\[2F(n)=\sum_{i=1}^n i*2^i \]

作差即可得到:

\[\begin{aligned} F(n)&=n*2^n-\sum_{i=0}^{n-1}2^i\\ &=n*2^n-(2^n-1)\\ &=(n-1)*2^n+1 \end{aligned}\]

快速冪實現即可

程式碼

int qpow(LL x,LL y,int MOD)
{
	LL ret = 1;y %= (MOD-1);
	while(y){if(y & 1) ret = ret * x % MOD;x = x * x % MOD;y >>= 1;}
	return ret;
}

int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	while(~scanf("%lld",&n)) Put(((n-1) % MOD * qpow(2,n,MOD) + 1) % MOD,'\n');
	return 0;
}