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

【2023——二项式反演】

题目

分析

采用至少->恰好

勘误:n-3k是位置,包括自由位数和潜在的4位段的位置 

f(i) =\binom{n-3i}{i} \cdot 10^{n-4i}

g(m) = \sum_{i=m}^{n/4} \binom{i}{m} \cdot (-1)^{i-m} \cdot f(i)

代码

#include <iostream>
using namespace std;
using ll = long long;

const int N = 1e5+10;
const int mod = 998244353;

int fac[N], infac[N];

int qmi(int base, int expo)
{
  int retv = 1;
  while(expo)
  {
    if(expo & 1) retv = 1ll * retv * base % mod;
    base = 1ll * base * base % mod;
    expo >>= 1;
  }

  return retv;
}
void init(int n)
{
  fac[0] = 1, infac[0] = 1;
  for(int i = 1; i <= n; i++)
    fac[i] = 1ll * fac[i - 1] * i % mod;
  infac[n] = qmi(fac[n], mod-2);
  for(int i = n-1; i; i--)
    infac[i] = 1ll * infac[i+1] * (i+1) % mod; //注意这里是 *(i+1)
}
int C(int a, int b)
{
  return 1ll * fac[a] * infac[b] % mod * infac[a-b] % mod;
}
int main()
{
  init(1e5);

  int n, m;
  cin >> n >> m;

  ll ans = 0;
  for(int i = m; i <= n/4; i++)
  {
    ll seg = 1ll * C(i, m) * C(n-3*i, i) % mod * qmi(10, n-4*i) % mod;
    if(i-m&1) seg = -seg;
    ans = (ans + seg + mod) % mod; //存在-seg,要防负
  }

  cout << ans;
  return 0;
}

相关文章:

  • 什么是多线程?线程池?
  • 基于vue3和spring boot实现大文件上传
  • 2025年2月21日优雅草内测分发站全新升级-测试运营-优雅草内测分发站新用户提供免费100下载点-2月28日正式运营并且提供私有化部署版本
  • GPT大语言模型与搜索引擎:技术本质与应用场景的深度解析
  • 第十四届蓝桥杯大赛软件赛国赛C/C++大学C组
  • Nodejs-逐行读取文件【简易版】
  • 金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
  • 算法题(81):询问学号
  • 服务器禁止操作汇总(Server Prohibits 0peration Summary)
  • 会话与会话管理:Cookie与Session的深度解析
  • shell中 <<<(Here String)的使用
  • etcd部署硬件资源推荐
  • 搭建数字化生态平台公司:痛点与蚓链解决方案
  • Zookeeper(79)如何进行Zookeeper的监控?
  • 回溯算法中的for循环和递归使用
  • 自动化测试框架设计
  • Unity 优化封装常用API和编辑器扩展工具包
  • Redis的过期策略及其优缺点
  • FPGA之硬件设计笔记-持续更新中
  • python-leetcode-颜色分类
  • 网站优化一般怎么做/如何做网址
  • 网站国外空间/bt蚂蚁磁力搜索天堂
  • 别人做的网站自己想更新/磁力猫搜索引擎入口官网
  • 电子商务网站建设的意义是什么/网站为什么要seo?
  • ue4培训/南宁网站seo排名优化
  • 网站安全评估报告/百度搜索关键词设置