/*Author : lifehappy
*/#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;constint N =1e6+10, mod =998244353, G =3;int r[N], n;ll a[N], b[N], c[N];ll quick_pow(ll a,int n){ll ans =1;while(n){if(n &1) ans = ans * a % mod;a = a * a % mod;n >>=1;}return ans;}voidNTT(ll *f,int lim,int rev){for(int i =0; i < lim; i++){if(r[i]< i){swap(f[i], f[r[i]]);}}for(int i =1; i < lim; i <<=1){ll wn =quick_pow(G,(mod -1)/(i <<1));for(int p = i <<1, j =0; j < lim; j += p){ll w =1;for(int k =0; k < i; k++, w = w * wn % mod){ll x = f[j + k], y = w * f[i + j + k]% mod;f[j + k]=(x + y)% mod, f[i + j + k]=(x - y + mod)% mod;}}}if(rev ==-1){ll inv =quick_pow(lim, mod -2);reverse(f +1, f + lim);for(int i =0; i < lim; i++){f[i]= f[i]* inv % mod;}}}voidget_r(int lim){for(int i =0; i < lim;++i){r[i]=(i &1)*(lim >>1)+(r[i >>1]>>1);}}voidsolve(ll *a, ll *b,int n){if(n ==1){b[0]=quick_pow(a[0], mod -2);return;}solve(a, b, n +1>>1);int lim =1;n <<=1;while(lim < n) lim <<=1;n >>=1;get_r(lim);for(int i =0; i < n; i++) c[i]= a[i];for(int i = n; i < lim; i++) c[i]=0;NTT(b, lim,1);NTT(c, lim,1);for(int i =0; i < lim; i++){ll temp =(2ll- c[i]* b[i]% mod + mod)% mod;b[i]= b[i]* temp % mod;}NTT(b, lim,-1);for(int i = n; i < lim; i++){b[i]=0;}}intmain(){// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);scanf("%d",&n);for(int i =0; i < n; i++){scanf("%lld\n",&a[i]);}solve(a, b, n);for(int i =0; i < n; i++){printf("%lld%c", b[i], i +1== n ?'\n':' ');}return0;}
CF773F Test Data Generation
https://www.luogu.com.cn/problem/CF773F 这个题还是挺巧妙的,最后需要我们求解的实际上值域为a选择奇数个数最大数是奇数的方案数,然后这个东西显然包含了3个信息,值域、个数、最后一个数的奇偶性,…
题目描述 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以…
前言今天,我们很高兴宣布 CAP 发布 2.6 版本正式版。同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star.自从上次 CAP 2.5 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也…
Area
皮克定理:皮克定理是指一个计算点阵中顶点在格点上的多边形面积公式,该公式可以表示为Sab2-1,其中a表示多边形内部的点数,b表示多边形落在格点边界上的点数,S表示多边形的面积。
/*Author : lifehap…