尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

《P4071 [SDOI2016] 排列计数》

《P4071 [SDOI2016] 排列计数》
📅 发布时间:2026/6/26 15:26:04

题目描述

求有多少种 1 到 n 的排列 a,满足序列恰好有 m 个位置 i,使得 ai​=i。

答案对 109+7 取模。

输入格式

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

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

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

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

输出格式

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

输入输出样例

输入 #1复制

5 1 0 1 1 5 2 100 50 10000 5000

输出 #1复制

0 1 20 578028887 60695423

说明/提示

数据规模与约定

本题共 20 个测试点,各测试点等分,其数据规模如下表。

测试点编号T=n,m≤测试点编号T=n,m≤
1∼3103810∼12103103
4∼61031213∼145×105103
7∼910310015∼205×105106

对于全部的测试点,保证 1≤T≤5×105,1≤n≤106,0≤m≤106。

代码实现:

#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define ll long long using namespace std; const int N=1010101; const ll mod=1e9+7; ll t, n, m, inv[N], fac[N], pt[N], res; ll qpow(ll x, ll y) { res = 1; while(y > 0) { if(y % 2) res = (res * (x % mod)) % mod; x = ((x % mod) * (x % mod)) % mod; y >>= 1; } return res; } int main() { inv[0] = 1; inv[1] = 1; pt[0] = 1; pt[2] = 1; pt[3] = 2; fac[1] = 1; for(int i=2; i<=N; ++i) fac[i] = ((fac[i-1] % mod) * (i % mod)) % mod; for(int i=4; i<=N; ++i) if(i%2 == 0) pt[i] = ((pt[i-1] % mod * i % mod) % mod + 1) % mod; else pt[i] = ((pt[i-1] % mod * i % mod) % mod - 1 + mod) % mod; inv[N] = qpow(fac[N], mod-2); for(ll i=N; i>=2; --i) inv[i-1] = ((inv[i] % mod) * i) % mod; scanf("%lld", &t); while(t--) { scanf("%lld%lld", &n, &m); printf("%lld\n", (((fac[n] % mod * inv[n-m] % mod) % mod * inv[m] % mod) % mod * pt[n-m] % mod) % mod); } return 0; }

相关新闻

  • PyTorch-CUDA-v2.6镜像支持vLLM加速大模型推理吗?测试反馈
  • 实现关系型数据库需要完成的任务
  • 玩转Java Map集合,从基础到实战的全面解析

最新新闻

  • Tableau连接虚拟机Hive
  • 3步搞定Switch注入:TegraRcmGUI图形化工具完全指南
  • 自习室和托管机构,为什么适合做词汇数字名师项目
  • Ubuntu Python环境搭建:APT+venv最佳实践指南
  • 码道·印记:轻量级前后端分离的个人博客管理系统开发与云端部署
  • 终极免费跨平台绘图工具:draw.io桌面版完整使用指南

日新闻

  • Qwen2.5-Turbo百万上下文实战指南:百炼平台长文本处理全解析
  • 怎么监控对标账号更新,2026年作者监控工作流,5款深度对比
  • EdgeRemover:专业级Windows Edge浏览器管理工具,彻底解决顽固软件卸载难题

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号