2025CSP-J 冲刺训练(1):计数问题

C S P − J / S 2025 \tt CSP-J/S 2025 CSPJ/S2025 第一轮 还剩 244 \tt 244 244
C S P − J / S 2025 \tt CSP-J/S 2025 CSPJ/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×(n1)×(n2)××(nm+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×(m1)×(m2)××1n×(n1)×(n2)××(nm+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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值