2025CSP-J 冲刺训练 1
距 C S P − J / S 2025 \tt CSP-J/S 2025 CSP−J/S2025 第一轮 还剩 244 \tt 244 244 天
距 C S P − J / S 2025 \tt CSP-J/S 2025 CSP−J/S2025 第二轮 还剩 279 \tt 279 279 天
一、基础知识
1. 加法原理
加法原理的核心思想:如果一个问题可以分解成互不相交的多个子问题,那么问题的总数目等于各个子问题的数目之和。
2. 乘法原理
乘法原理的核心思想:如果一个过程可以分为 n n n 个独立的步骤,其中第 i i i 个步骤有 m i m_i mi 种选择方式,那么整个过程的选择方式数目为 m 1 × m 2 × ⋯ × m n m_1 × m_2 × \cdots × m_n m1×m2×⋯×mn。
3. 排列数
A n m A_n^m Anm( P n m P_n^m Pnm)表示排列数,计算方法为从 n n n 向下数连续的 m m m 个数累乘,即:
A n m = n ! m ! = n × ( n − 1 ) × ( n − 2 ) × ⋯ × ( n − m + 1 ) A_n^m=\frac{n!}{m!}=n\times (n-1)\times(n-2)\times\cdots\times(n-m+1) Anm=m!n!=n×(n−1)×(n−2)×⋯×(n−m+1)
4. 组合数
C n m C_n^m Cnm 表示组合数,计算方法为 A n m A_n^m Anm 的基础上除以 m m m 个数排列的次数( A m m A_m^m Amm),即:
C n m = A n m A m m = A n m m ! = n × ( n − 1 ) × ( n − 2 ) × ⋯ × ( n − m + 1 ) m × ( m − 1 ) × ( m − 2 ) × ⋯ × 1 C_n^m=\frac{A_n^m}{A_m^m}=\frac{A_n^m}{m!}=\frac{n\times(n-1)\times(n-2)\times\cdots\times(n-m+1)}{m\times(m-1)\times(m-2)\times\cdots\times1} Cnm=AmmAnm=m!Anm=m×(m−1)×(m−2)×⋯×1n×(n−1)×(n−2)×⋯×(n−m+1)
二、模板
1. 快速幂
typedef long long ll;
const ll MOD=1e9+7;
ll qpow(ll a,ll b){
ll ret=1;
a%=MOD;
while(b){
if(b&1)//if(b%2==1)
ret=(ret*a)%MOD;
a=(a*a)%MOD;
b>>=1;//b/=2
}
return ret;
}
2. 组合数预处理
for(int i=0;i<MAXN;i++){
//组合数预处理
comb[i][0