购物网站建设ppt,商丘在线商城,谷歌chrome安卓版,什么叫电商怎么做电商正题
题目链接:https://ac.nowcoder.com/acm/contest/20108/B 题目大意
给出一个长度为nnn的序列aaa#xff0c;每次
如果nnn是偶数#xff0c;则对于所有的ininin令新的ai′ai′ai1′a_ia_ia_{i1}ai′ai′ai1′如果nnn是奇数#xff0c;则对于所有的i…正题
题目链接:https://ac.nowcoder.com/acm/contest/20108/B 题目大意
给出一个长度为nnn的序列aaa每次
如果nnn是偶数则对于所有的ininin令新的ai′ai′ai1′a_ia_ia_{i1}ai′ai′ai1′如果nnn是奇数则对于所有的ininin令新的ai′ai′−ai1′a_ia_i-a_{i1}ai′ai′−ai1′
1≤n≤105,1≤ai≤1091\leq n\leq 10^5,1\leq a_i\leq 10^91≤n≤105,1≤ai≤109 解题思路
对于一个位置它操作kkk次之后肯定可以用后面的若干个数表示设多项式fk(x)∑i0∞bixif_k(x)\sum_{i0}^{\infty }b_ix^ifk(x)∑i0∞bixi有ap′∑i0nbi×apia_{p}\sum_{i0}^nb_i\times a_{pi}ap′∑i0nbi×api。
那么对于这个多项式如果nnn是奇数那么有fk(x)fk−1(x)×(1x)f_k(x)f_{k-1}(x)\times (1x)fk(x)fk−1(x)×(1x)否则fk(x)fk−1(x)×(1−x)f_k(x)f_{k-1}(x)\times (1-x)fk(x)fk−1(x)×(1−x)。
也就是每次(1x)(1x)(1x)和(1−x)(1-x)(1−x)交替乘n−1n-1n−1次如果nnn是奇数那么 fn−1(x)((1x)(1−x))n−12(1−x2)n−12f_{n-1}(x)((1x)(1-x))^{\frac{n-1}{2}}(1-x^2)^{\frac{n-1}{2}}fn−1(x)((1x)(1−x))2n−1(1−x2)2n−1 用二项式定理拆开暴力算就好了
如果nnn是偶数就直接再乘个1x1x1x就好了。
时间复杂度O(n)O(n)O(n) code
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
const ll N1e510,P1e97;
ll n,ans,fac[N],inv[N],f[N];
ll C(ll n,ll m)
{return fac[n]*inv[m]%P*inv[n-m]%P;}
signed main()
{scanf(%lld,n);n--;inv[0]inv[1]fac[0]1;for(ll i2;in;i)inv[i]P-(P/i)*inv[P%i]%P;for(ll i1;in;i)inv[i]inv[i-1]*inv[i]%P,fac[i]fac[i-1]*i%P;for(ll i0;in/2;i)f[i*2](i1)?(P-C(n/2,i)):(C(n/2,i));if(n1){for(ll in;i1;i--)f[i]f[i]f[i-1];}for(ll i0,x;in;i)scanf(%lld,x),(ansf[i]*x%P)%P;printf(%lld\n,ans);return 0;
}