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

《P4071 [SDOI2016] 排列计数》

题目描述

求有多少种 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; }
http://www.jsqmd.com/news/156856/

相关文章:

  • IDA Pro macOS版本下载实录:项目应用中的配置经验
  • PyTorch-CUDA-v2.6镜像支持vLLM加速大模型推理吗?测试反馈
  • PyTorch-CUDA-v2.6镜像中运行FastViT图像分类模型表现如何?
  • hbuilderx制作网页完整指南:集成 Git 进行版本控制
  • 吃透Set集合,这篇练习帖就够了!
  • PyTorch-CUDA-v2.6镜像中运行Whisper Large V3语音识别精度测试
  • PyTorch-CUDA-v2.6镜像部署Graph Neural Network图神经网络
  • 通俗解释USB接口有几种命名规则
  • PyTorch-CUDA-v2.6镜像中使用Albumentations进行数据增强
  • 玩转Java Map集合,从基础到实战的全面解析
  • QListView基本架构解析:系统学习起步
  • 实现关系型数据库需要完成的任务
  • 异常练习:在试错中吃透Java异常处理的底层逻辑
  • Keil安装后C51无法新建工程问题解析
  • 猜测心跳包机制的核心逻辑
  • 提升查询速度:Elasticsearch堆外内存调优操作指南
  • BashOperator 中 bash_command 以 .sh 结尾会被误判为模板文件的问题分析
  • Times New Roman字体可用在商标注册不!
  • PyTorch-CUDA-v2.6镜像运行DreamBooth个性化图像生成
  • 设计异步监听TCP客户端重连的逻辑
  • PyTorch-CUDA-v2.6镜像运行Diffusion Model图像去噪过程解析
  • IPv4 和 IPv6 的区别
  • 卖农产品小米侵权?“小米”牌小米商标已被注销!
  • PyTorch-CUDA-v2.6镜像运行CLIP多模态模型图文检索应用
  • AI系统在处理稀疏奖励环境时的探索策略
  • 【Hot100-Java简单】:两数之和 (Two Sum) —— 从暴力枚举到哈希表的思维跃迁
  • 2025年大模型六大突破,从小白到专家必看,2025大模型年度回顾
  • 基于STM32的智能空气质量检测系统
  • Effective C++学习笔记
  • 【Hot100-Java中等】:字母异位词分组