crash的遊戲
阿新 • • 發佈:2018-12-12
題目大意:求: 。500組資料。 題解: 直接暴做。 首先注意到是一個關於的次多項式,設,則: 其中: 可以在時間內計算,其中為第二類斯特林數。 綜上,均可在時間內求出。 (實際上,關於,可以使用一些關於生成函式的技巧得知其是一個次多項式與的乘積,可以使用拉格朗日插值在時間內算出單項(所以說好像沒啥用)) 總之這樣就做完了。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define mod 1000000007
#define lint long long
#define gc getchar()
#define N 310
#define debug(x) cerr<<#x<<"="<<x
#define sp <<" "
#define ln <<endl
using namespace std;
inline int inn()
{
int x,ch;while((ch=gc)<'0'||ch>'9');
x=ch^'0';while((ch=gc)>='0'&&ch<='9')
x=(x<<1)+(x<<3)+(ch^'0');return x;
}
int st[N][N],fac[N],facinv[N],inv[N],a[N],npm[N],pm2[N],f[N];
inline int fast_pow(int x,int k,int ans=1) { for(;k;k>>=1,x=(lint)x*x%mod) (k&1)?ans=(lint)ans*x%mod:0;return ans; }
const int inv2=fast_pow(2,mod-2);
inline int prelude(int n)
{
fac[0]=1;
for(int i=1;i<=n;i++) fac[i]=(lint)fac[i-1]*i%mod;
facin