数论--二项式反演

Posted 东流vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数论--二项式反演相关的知识,希望对你有一定的参考价值。

若能凑出其中一个式子,则能反演出另外一个式子

 

应用:

HDU 1465

设g(i)表示正好有i封信装错信封

那么全部的C(n, i)*g(i)加起来正好就是所有装信的情况,总共n!(全排列)种情况

即:

代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 typedef long long LL;
 5 LL fac[30];
 6 LL ans[30];
 7 LL c[30][30];
 8 int p[30];
 9 
10 void init()
11 {
12     c[1][0]=1;
13     c[1][1]=1;
14     p[0]=1;
15     p[1]=-1;
16     for(int i=2;i<=20;i++)
17     {
18         p[i]=p[i-1]*(-1);
19         
20         for(int j=0;j<=i;j++)
21         {
22             if(j==0||j==i)
23             c[i][j]=1;
24             else
25             c[i][j]=c[i-1][j-1]+c[i-1][j];
26         }
27     }
28     
29  } 
30  
31 int main()
32 {
33     init();
34     fac[0]=1;
35     fac[1]=1;
36     for(int i=2;i<=20;i++)
37     fac[i]=i*fac[i-1];
38     for(int i=1;i<=20;i++)
39     {
40         ans[i]=0;
41         for(int j=0;j<=i;j++)
42         {
43             ans[i]+=fac[j]*p[i-j]*c[i][j];
44         }
45     }
46         
47     int n;
48     while(scanf("%d",&n)!=EOF)
49     {
50         printf("%I64d\\n",ans[n]);
51     }
52  } 

 

以上是关于数论--二项式反演的主要内容,如果未能解决你的问题,请参考以下文章

[模板] 常见反演公式

计数问题小技巧

[总结]其他杂项数学相关(定理&证明&板子)

[bzoj4665]小w的喜糖_二项式反演

还有哪些东西要写?_?

反演魔术---二项式反演