news 2026/4/18 18:17:29

打卡信奥刷题(3121)用C++实现信奥题 P7392 「TOCO Round 1」奇怪的排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3121)用C++实现信奥题 P7392 「TOCO Round 1」奇怪的排序

P7392 「TOCO Round 1」奇怪的排序

题目背景

欢喜不问天,风流不问天,温柔不问天,良辰不问天,良缘不问天。

问你不问天。

题目描述

情人节那天Biadocy\color{orange}\texttt{Biadocy}Biadocy被虐得好惨,尤其是上流的公爵和小孩说什么《和你在一起的每一天,都叫情人节》。于是他找到了一个机会来报复。

现在有nnn对情人编号为1∼n1\sim n1n按任意顺序排成一列,Biadocy\color{orange}\texttt{Biadocy}Biadocy对他们执行了下面这段排序的伪代码。

Biadocy\color{orange}\texttt{Biadocy}Biadocy想知道有多少种初始排列满足按照这段伪代码排序后情人们的编号有序。也许这能让他好受一点。

输入格式

第一行一个整数TTT表示数据组数。

接下来TTT行每行两个整数n,kn,kn,k表示情人对数和第一次调用伪代码传入的参数。

输出格式

TTT行,每行一个整数,表示答案对109+710^9+7109+7取模的结果。

输入输出样例 #1

输入 #1

3 3 1 10 2 1 0

输出 #1

3 25200 1

输入输出样例 #2

输入 #2

5 502520 0 502520 1 502520 2 502520 3 502520 4

输出 #2

1 218102685 429650441 770595802 584122358

说明/提示

对于前10%10\%10%的数据,T=0T=0T=0
对于前30%30\%30%的数据,T≤10T\leq 10T10n≤7n\leq 7n7
对于另外10%10\%10%的数据,k=0k=0k=0
对于另外10%10\%10%的数据,k=100k=100k=100
对于100%100\%100%的数据,0≤T≤1050\leq T\leq 10^50T1051≤n≤1061\leq n\leq 10^61n1060≤k≤1000\leq k\leq 1000k100

C++实现

#include<iostream>#definelllonglongconstintmod(1e9+7);usingnamespacestd;ll t,n,k,jc[1000005]={0,1};llqpow(ll a,ll b){ll s=1;while(b){if(b&1)s=s*a%mod;a=a*a%mod;b>>=1;}returns;}intmain(){#ifdefytxyfreopen("in.txt","r",stdin);#endifcin>>t;for(inti=2;i<=1e6;i++)jc[i]=jc[i-1]*i%mod;while(t--){cin>>n>>k;if(k>20||(1<<k)>=n)cout<<jc[n]<<'\n';elseif(k==0)cout<<1<<'\n';elsecout<<1ll*qpow(qpow(jc[n/(1<<k)],mod-2)/*逆元*/,1<<k)*qpow(qpow(n/(1<<k)+1,mod-2),n%(1<<k))%mod/*此前为求概率(所有第k层子集有序的总概率)*/*jc[n]/*全排列数*/%mod<<'\n';}}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 18:02:28

转:从Prompt到Agent:解锁智能体开发的核心能力

个人理解&#xff1a; Agent <> Promp 函数调用 -- 自主、可执行、能记忆、会反思 Prompt&#xff1a;输入提问、输出回答&#xff0c;输入结构性的提问、输出更准确的回答 从Prompt到Agent&#xff1a;解锁智能体开发的核心能力 从Prompt到Agent&#xff1a;解锁智能…

作者头像 李华
网站建设 2026/4/18 12:49:42

5分钟掌握分子动力学分析:MDAnalysis终极指南

5分钟掌握分子动力学分析&#xff1a;MDAnalysis终极指南 【免费下载链接】mdanalysis MDAnalysis is a Python library to analyze molecular dynamics simulations. 项目地址: https://gitcode.com/gh_mirrors/md/mdanalysis 想象一下&#xff0c;你刚刚完成了长达数周…

作者头像 李华
网站建设 2026/4/16 15:10:37

3.3 Java运算符(自增自减运算符)

一、什么是自增自减运算符&#xff1f;定义&#xff1a;&#xff1a;将变量值 加 1--&#xff1a;将变量值 减 1特点&#xff1a;是一种 复合赋值运算符可以用于 int, short, byte, long, float, double 等数值类型不能用于 boolean 类型二、两种使用方式&#xff1a;前缀 vs 后…

作者头像 李华
网站建设 2026/4/17 23:13:58

从DDPM到EDM:一文看懂扩散模型Preconditioning的演进与PyTorch实现

从DDPM到EDM&#xff1a;扩散模型Preconditioning技术演进与PyTorch实战指南 扩散模型训练稳定性的技术演进 扩散模型近年来在生成式AI领域掀起了一场革命&#xff0c;但很少有人知道&#xff0c;这项技术的核心突破之一来自于对训练稳定性的持续优化。想象一下&#xff0c;当你…

作者头像 李华