当前位置: 首页 > 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;
    }
}

相关文章:

  • 郑州做网站价格推广文案怎么写
  • 商城网站建设需要多少钱百度首页广告多少钱
  • 开发小程序费用seo图片优化
  • 网站建设 手机和pc百度指数资讯指数是指什么
  • 大宇网络潍坊网站建设推广引流
  • 唐山企业网站自己怎样推广呢
  • 财务运营域——营收稽核系统设计
  • 内存对齐的原因和规则
  • C++中,运算符重载,+,-,*,/,=,+=,[]的使用
  • 利用Ai对生成的测试用例进行用例评审
  • Spring MVC 与 Spring Boot:从“手动挡”到“自动驾驶”的进化论,兼谈前后端分离的哲学
  • 单机上使用docker搭建minio集群
  • 3分钟快速本地部署deepseek
  • 网站快速收录:如何优化网站内部搜索功能?
  • Python学习总结
  • 【量化策略】双均线交叉策略
  • transformer架构嵌入层位置编码之RoPE旋转位置编码及简单实现示例
  • python读取sqlite温度数据,并画出折线图
  • 自己的百科词条能删掉吗?个人如何删除自己的百科词条?
  • 电动机能耗制动控制电路
  • SVM 支持向量机
  • Java笔记18
  • 前缀和与差分
  • 【深度学习】Adam和AdamW优化器有什么区别,以及为什么Adam会被自适应学习率影响
  • 鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)
  • MySQL 数据库基础