当前位置: 首页 > news >正文

ZJYYC2510. 蓝红球

ZJYYC2510. 蓝红球

题目

在这里插入图片描述

题目解析及思路

题目要求将蓝色球分成 i 个堆,第i行输出可能的排列方式

即组合数问题,推理可知答案为Ci-1m-1 * Cin-m+1

组合数问题都是乘法逆元的题,公式为Cba = fac[a] * infac[b] * infac[a-b]

代码

#include<bits/stdc++.h>

using namespace std;
const int MOD = 1e9 + 7;
const int N = 2010;
typedef long long LL;
LL fac[N],infac[N];

//快速幂,用来求乘法逆元
LL qmi(LL a,LL b){
    LL res = 1;
    while(b){
        if(b & 1) res = (res * a) % MOD;
        b >>= 1;
        a = (a * a) % MOD;
    }
    return res;
}

//求逆元和阶乘

void solve(){
    fac[0] = infac[0] = 1;
    for(int i=1;i<N;i++){
        fac[i] = fac[i-1] * i % MOD;
    }
    for(int i=1;i<N;i++){
        //根据费马小定理(有模数MOD的前提下)推出:i的逆元 = i-1的逆元 * i的模数-2次方
        infac[i] = infac[i-1] * qmi(i,MOD-2) % MOD;
    }
}
//组合数函数
LL C(int a,int b){
    if(a<0 || b<0 || a<b) return 0;
    return fac[a] * infac[b]%MOD * infac[a-b]%MOD;
}
int main(){
    solve();
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        LL c1 = C(m-1,i-1) % MOD;
        LL c2 = C(n-m+1,i) % MOD;
        cout<<(c1*c2)%MOD<<endl;
    }
}

相关文章:

  • 财务运营域——营收稽核系统设计
  • 内存对齐的原因和规则
  • C++中,运算符重载,+,-,*,/,=,+=,[]的使用
  • 利用Ai对生成的测试用例进行用例评审
  • Spring MVC 与 Spring Boot:从“手动挡”到“自动驾驶”的进化论,兼谈前后端分离的哲学
  • 单机上使用docker搭建minio集群
  • 3分钟快速本地部署deepseek
  • 网站快速收录:如何优化网站内部搜索功能?
  • Python学习总结
  • 【量化策略】双均线交叉策略
  • transformer架构嵌入层位置编码之RoPE旋转位置编码及简单实现示例
  • python读取sqlite温度数据,并画出折线图
  • 自己的百科词条能删掉吗?个人如何删除自己的百科词条?
  • 电动机能耗制动控制电路
  • SVM 支持向量机
  • Java笔记18
  • 前缀和与差分
  • 【深度学习】Adam和AdamW优化器有什么区别,以及为什么Adam会被自适应学习率影响
  • 鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)
  • MySQL 数据库基础
  • “95后”楼威任浙江师范大学教授,研究方向为医学人工智能
  • 上海成五一国内最热门的入境游目的地,国际消费明显提升
  • 五一假期,新任杭州市委书记刘非到嘉兴南湖瞻仰红船
  • 体坛联播|曼联一只脚迈进欧联杯决赛,赵心童4比4奥沙利文
  • 旅游特种兵们,这个五一“躲进”书吧
  • 5月资金面前瞻:政府债净融资规模预计显著抬升,央行有望提供流动性支持