fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define fi first
  5. #define se second
  6. #define siz(x) (int)(x.size())
  7. #define all(x) x.begin(), x.end()
  8. #define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
  9. #define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
  10. const int maxN = 1e6+5, mod = 1e9+7;
  11.  
  12. int n, t, f[maxN], fact[maxN], inv_fact[maxN], pref[maxN], suff[maxN];
  13.  
  14. long long mux(int x, int y)
  15. {
  16. if(y == 0) return 1;
  17. int tmp = mux(x, y/2);
  18. if(y & 1) return (1ll * (tmp*tmp) % mod * x % mod);
  19. else return (1ll * (tmp*tmp) % mod);
  20. }
  21.  
  22. void prep()
  23. {
  24. fact[0] = 1;
  25. for(int i=1; i<=2e5; i+=1) fact[i] = 1ll * fact[i-1] * i % mod;
  26. inv_fact[200000] = mux(fact[200000], mod-2);
  27. for(int i=2e5-1; i>=0; i-=1) inv_fact[i] = 1ll * inv_fact[i+1] * (i+1) % mod;
  28. }
  29.  
  30. void solve()
  31. {
  32.  
  33. }
  34.  
  35. int32_t main()
  36. {
  37. ios_base::sync_with_stdio(0); cin.tie(0);
  38. prep();
  39. cin>>n;
  40. for(int i=0; i<=n; i+=1) cin>>f[i];
  41. cin>>t;
  42. pref[0] = 1;
  43. for(int i=0; i<=n-1; i+=1) pref[i+1] = 1ll * pref[i] * (t-i) % mod;
  44. suff[n+1] = 1;
  45. for(int i=n; i>=0; i-=1) suff[i] = 1ll * suff[i+1] * (t-i) % mod;
  46. int ans = 0;
  47. for(int i=0; i<=n; i+=1)
  48. {
  49. int res = f[i];
  50. res = 1ll * res * pref[i] % mod;
  51. res = 1ll * res * suff[i+1] % mod;
  52. res = 1ll * res * inv_fact[n-i] % mod;
  53. res = 1ll * res * inv_fact[i] % mod;
  54. if((n - i) & 1) ans -= res;
  55. else ans += res;
  56. ans %= mod;
  57. }
  58. ans += mod; ans %= mod;
  59. cout<<ans<<'\n';
  60. }
Success #stdin #stdout 0.01s 11704KB
stdin
Standard input is empty
stdout
0