妙哉,这个公式还顺便地消去了2得到1/2的(2n)! 对了,位运算记得要强制匹配哦。 #include<bits/stdc++.h>usingnamespacestd;constintmod=1e9+7;longlongf[100005];intmain( ) {///freopen("lys.in","r",stdin);f[1]=1;for(inti=2;i<=100005;i++) { f[i]=f[i-1]*(i<<1)%mod*((i<<...
也就是 ( 2 n ) ! 2 \frac{(2n)!}{2} 2(2n)! #include <bits/stdc++.h> usingnamespacestd; #define int long long constintmaxn=3e5+10; constintmod=1e9+7; intquick(intx,intn) { intans=1; for( ;n;n>>=1,x=x*x%mod) if(n&1)ans=ans*x%mod; returnans; } intn,...
solution:证明了对于一个数列,假如它自己会被count到,那它的反向处理过的数列肯定不会 既然对任意一个数列都是这样,那么总数的一半就是答案。 是找规律?是构造反向处理? 最绝妙的点在于这个:no less then n,如果不是n的话,以上条件就都不成立了。 对这个特殊值敏感值不够,做神奇题的眼界也不够。 20211021,...
Codeforces Round #745 (Div. 2) A. CQXYM Count Permutations 由对称性得知,如果一个数字成立(如1234),那么这个数字置反一定不成立(如4321),那么我们可以大胆猜想一个定理:对于长为2*n的序列,这个序列的合法排列数为((2*n)!/2)。 注意,此处有着大量模运算,除法需要使用逆元。 #include<cstdio>#include<...