排列组合

排列:有序且不重复:\(P_n^m=A_n^m=\frac{n!}{(n-m)!}\)
组合:无序且不重复:\(C_n^m=\frac{n!}{(n-m)!m!}\)
推广:二项式定理

\[(x+y)^n=C_n^0x^ny^0+C_n^1x^{n-1}y^1+⋯+C_n^{n-1}x^1y^{n-1}+C_n^nx^0y^n=\sum_{k=0}^nC_n^kx^{n-k}y^k=\sum_{k=0}^nC_n^kx^ky^{n-k} \]

其中二次项系数符合杨辉三角
\(\sum_{k=0}^{n}C_n^{k}\)\(k\) 为偶数):
分析:在二项式定理中,取\(x=1,y=1\)\(x=1,y=-1\)
则:

\[(1+1)^n=C_n^01^n1^0+C_n^11^{n-1}1^1+⋯+C_n^{n-1}1^11^{n-1}+C_n^n1^01^n=\sum_{i=0}^{n}C_n^i=2^n \]

\[(1-1)^n=C_n^0-C_n^1+⋯+(-1)^nC_n^n=\sum_{i=0}^{n}(-1)^iC_n^i \]

两式相加,得\(\sum_{k=0}^{n}C_n^{k}=2^{n-1}\)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
long long ans();
int main()
{
	int t; scanf("%d",&t);
	for(int i=1;i<=t;i++)
	{
		scanf("%d",&n);
		printf("%lld\n",ans());
	}
	return 0;
}
long long ans()
{
	int sum=0;
	for(int i=2;i<=n;i++)
		while(n%i==0)
		{
			n/=i; sum++;
		}
	if(sum) return sum;
	else return 1;
}
posted @ 2019-02-10 10:49  常青藤的花语  阅读(294)  评论(0编辑  收藏  举报

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。