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

题解:洛谷 P4071 [SDOI2016] 排列计数

【题目来源】

洛谷:P4071 [SDOI2016] 排列计数 - 洛谷

【题目描述】

求有多少种 \(1\)\(n\) 的排列 \(a\),满足序列恰好有 \(m\) 个位置 \(i\),使得 \(a_i = i\)

答案对 \(10^9 + 7\) 取模。

【输入】

本题单测试点内有多组数据

输入的第一行是一个整数 \(T\),代表测试数据的组数。

以下 \(T\) 行,每行描述一组测试数据。

对于每组测试数据,每行输入两个整数,依次代表 \(n\)\(m\)

【输出】

共输出 \(T\) 行,对于每组测试数据,输出一行一个整数代表答案。

【输入样例】

5
1 0
1 1
5 2
100 50
10000 5000

【输出样例】

0
1
20
578028887
60695423

【解题思路】

image

【算法标签】

《洛谷 P4071 排列计数》 #递推# #枚举# #线性递推# #逆元# #各省省选# #2016# #山东#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005, mod = 1e9+7;
int t, n, m;
int fact[N], inv[N], f[N];  // fact:阶乘, inv:阶乘逆元, f:错排数// 快速幂函数
int qmi(int a, int b)
{int mul = 1;while (b){if (b&1) mul = mul * a % mod;  // 如果b是奇数,乘上当前的aa = a * a % mod;  // a自乘b >>= 1;  // b右移一位}return mul;
}signed main()
{cin >> t;  // 读入测试用例数量// 初始化阶乘数组fact[0] = fact[1] = 1;  // 0! = 1, 1! = 1fact[2] = 2;  // 2! = 2// 初始化阶乘的逆元数组inv[0] = inv[1] = 1;  // 0!和1!的逆元都是1inv[2] = qmi(2, mod-2);  // 计算2!的逆元// 初始化错排数数组f[0] = 1;  // 0个元素的错排数为1(空排列)f[1] = 0;  // 1个元素的错排数为0f[2] = 1;  // 2个元素的错排数为1// 预处理阶乘、逆元和错排数for (int i=3; i<=1000000; i++){fact[i] = fact[i-1] * i % mod;  // 计算i! = (i-1)! * iinv[i] = qmi(fact[i], mod-2);  // 计算i!的逆元,使用费马小定理f[i] = (i-1) * (f[i-1] + f[i-2]) % mod;  // 错排数递推公式}while (t--)  // 处理每个测试用例{scanf("%d%d", &n, &m);  // 读入n和mint ans;// 计算组合数C(n,m) = n!/(m!*(n-m)!)ans = fact[n] * inv[m] % mod;  // n! * (m!)^-1ans = ans * inv[n-m] % mod;  // 再乘以((n-m)!)^-1// 计算错排数D_{n-m},即f[n-m]// 最终答案 = C(n,m) * D_{n-m}ans = ans * f[n-m] % mod;printf("%lld\n", ans);}return 0;
}

【运行结果】

5
1 0
0
1 1
1
5 2
20
100 50
578028887
10000 5000
60695423
http://www.jsqmd.com/news/397186/

相关文章:

  • 北京明清古籍回收,丰宝斋老字号上门,现金结算,价公道有保障 - 品牌排行榜单
  • [Kaleidoscope of Physics] 自然坐标系
  • 2026 专业除醛产品怎么选:光触媒和生物酶睿石适配场景 + 组合技巧 - 资讯焦点
  • 2026年2月中国推荐GEO服务商TOP8综合实力权威榜单:企业AISEO选型深度指南 - 资讯焦点
  • 北京线装书回收,丰宝斋上门鉴定,现金结算,专业守护文脉 - 品牌排行榜单
  • MISSION.md — AI自主创收作战手册
  • 2026年正规靠谱十大移民中介公司推荐,零拒签+零纠纷是选择金标准 - 资讯焦点
  • 2026年2月中国正规移民中介十大排行榜:飞际移民位居前列的客观观察 - 资讯焦点
  • 北京老书旧书回收,丰宝斋上门服务,现金结算,不让老书蒙尘 - 品牌排行榜单
  • 2026年智能干选机行业主流制造商权威评测:技术落地成核心分水岭,头部格局基本成型 - 资讯焦点
  • 题解:洛谷 P1313 [NOIP 2011 提高组] 计算系数
  • 北京红宝书回收,丰宝斋上门服务,现金结算,价高同行 - 品牌排行榜单
  • 2026年2月权威发布:GEO优化服务商排行TOP7综合实力评估与选型指南 - 资讯焦点
  • 长期主义的拼命,会给你留后劲
  • 京东e卡回收灵活渠道解析 - 资讯焦点
  • 新房+儿童房+新车除醛攻略:2026 三款顶级除醛产品组合使用方法 - 资讯焦点
  • 北京丰宝斋上门回收名家字画,当场现金结算,老字号更靠谱 - 品牌排行榜单
  • 头屑反复、头皮瘙痒?2026实测5款高口碑去屑洗发水,重拾清爽秀发 - 资讯焦点
  • 最新实测|头油星人必看!10款热门控油洗发水深度测评,告别扁塌大油头 - 资讯焦点
  • 国产2026防脱发生发增发密发哪个牌子效果好?十大高分防脱生发品牌排行榜 - 资讯焦点
  • 1978-2024年各地级市全要素生产率数据
  • 在机器学习建模过程中,参数调优是个绕不开的坎。今天咱们用Matlab的神经网络工具箱实战一把K折交叉验证寻参,手把手搞定隐藏层节点数的选择
  • 两座城市,同一个 “立方”:透视春晚舞台上的中国算力地标 - 资讯焦点
  • 【硬核推测】2026自动挡古筝技术细节全解析|从乐展线索反推量产方案,附工程落地猜想
  • 题解:洛谷 P1287 盒子与球
  • 题解:洛谷 P3197 [HNOI2008] 越狱
  • LeetCode761:特殊的二进制字符串
  • 题解:洛谷 P4549 【模板】裴蜀定理
  • 从传统编程到AI协同开发的职业转型
  • 数据仓库入门指南:从零开始构建大数据存储系统