当前位置: 首页 > 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 数据库基础
  • 上海明天起进入“升温通道”,五一假期冲刺33℃
  • “90后”高层建筑返青春:功能调整的技术路径和运营考验
  • 五一假期上海路网哪里易拥堵?怎么错峰更靠谱?研判报告来了
  • 特朗普签署行政命令推动深海采矿,被指无视国际规则,引发环境担忧
  • 高糖高脂食物可能让你 “迷路”
  • 建设高标准农田主要目标是什么?有哪些安排?两部门有关负责人答问