4613. 【NOIP2016模拟7.12】求和

题目描述

在这里插入图片描述
n < = 1 0 5 n<=10^5

题目分析

  • 我们惊喜地发现这竟然是一道数论题。
  • 第二类斯特林数定义 S ( n , m ) S(n,m) 定义
  • 首先关于第二类斯特林数有一个特别重要的公式。
  • S ( i , j ) = 1 j ! k = 1 j ( 1 ) k C j k ( j k ) i S(i,j)=\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*C_j^k*(j-k)^i
  • 这是一个容斥,枚举有多少个集合是空的,但最后因为每一个集合是相同的,所以要除以 j ! j!
  • 然后我们把这个东西套进题目的式子里:
  • i = 0 n j = 0 i S ( i , j ) 2 j j ! \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j!
  • = i = 0 n j = 0 n S ( i , j ) 2 j j ! =\sum_{i=0}^n\sum_{j=0}^nS(i,j)*2^j*j!
  • = j = 0 n 2 j j ! i = 0 n S ( i , j ) =\sum_{j=0}^n2^j*j!*\sum_{i=0}^nS(i,j)
  • = j = 0 n 2 j j ! i = 0 n 1 j ! k = 1 j ( 1 ) k C j k ( j k ) i =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*C_j^k*(j-k)^i
  • = j = 0 n 2 j j ! i = 0 n 1 j ! k = 1 j ( 1 ) k j ! k ! ( j k ) ! ( j k ) i =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*\frac{j!}{k!(j-k)!}*(j-k)^i
  • = j = 0 n 2 j j ! i = 0 n k = 1 j ( 1 ) k ( j k ) i k ! ( j k ) ! =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\sum_{k=1}^{j}(-1)^k*\frac{(j-k)^i}{k!(j-k)!}
  • = j = 0 n 2 j j ! k = 1 j i = 0 n ( 1 ) k ( j k ) i k ! ( j k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\sum_{i=0}^n(-1)^k*\frac{(j-k)^i}{k!(j-k)!}
  • = j = 0 n 2 j j ! k = 1 j ( 1 ) k k ! i = 0 n ( j k ) i ( j k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\frac{(-1)^k}{k!}\sum_{i=0}^n\frac{(j-k)^i}{(j-k)!}
  • 用等比数列求和,可得:
  • = j = 0 n 2 j j ! k = 1 j ( 1 ) k k ! ( j k ) n + 1 1 ( j k 1 ) ( j k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\frac{(-1)^k}{k!}*\frac{(j-k)^{n+1}-1}{(j-k-1)(j-k)!}
  • 经过了一系列转折,我们终于接近终点,我们设:
  • f ( i ) = ( 1 ) i i ! f(i)=\frac{(-1)^i}{i!} g ( i ) = i n + 1 1 ( i 1 ) i ! g(i)=\frac{i^{n+1}-1}{(i-1)*i!}
  • 所以原式 = j = 0 n 2 j j ! k = 1 j f ( k ) g ( j k ) =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}f(k)*g(j-k)
  • 我们发现这是一个标准的卷积,所以用NTT求即可。
  • 时间复杂度 O ( n l o g 2 n ) O(nlog_2n)
发布了58 篇原创文章 · 获赞 12 · 访问量 8558

猜你喜欢

转载自blog.csdn.net/fengqiyuka/article/details/94589252
今日推荐