先说句新年好哈哈哈

今年又是颓废的一年呢。。。

(开始就满满负能量真好)

分析:

真是有趣的数学递推找规律问题呢。。。

考场上没想出来,然后n2^n的状压也想不到

索性20*20直接打表2333。。。

对于排列S(n,m)如果m>=2*n-1那么怎么放都不会影响,于是就是全排列前缀和了。。

然后怎么求

然后我们灵(da)光(biao)一(kan)闪(kan)惊奇的发现N大于MOD的阶乘就不用算了,模下来一定是0

到现在你已经有了40分的高分(大雾

接下来进入正解:

对于S(n,m),如果m<=n不用算了,无解

于是考虑n<m<2*n-1的情况

首先对于前m-n个元素,随便放都不会影响结果

然后第m-n+1号元素,也可以随意放,有m-n+1种选择

但这样对于第n号元素,就只有m-n种选择了

此时对于m-n+2号元素,刚好还有m-n+1种选择

但这样对于n-1号元素,只有m-n种选择

以此类推。。。我们得出了递推式:

S(n,m) = (m-n) ! * (m-n+1) ^ ((i-k)/2上取整) * (m-n) ^ ((i-k)/2下取整)

然后大力推S(i,i+k),本质就是等比数列求和

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> #define maxn 21
#define MOD 20000023 using namespace std; inline long long getint()
{
long long num=,flag=;char c;
while((c=getchar())<''||c>'')if(c=='-')flag=-;
while(c>=''&&c<='')num=num*+c-,c=getchar();
return num*flag;
} int fac[MOD],sum[MOD];
long long n,K; inline void init()
{
fac[]=;
for(int i=;i<MOD;i++)fac[i]=1ll*fac[i-]*i%MOD;
for(int i=;i<MOD;i++)sum[i]=(sum[i-]+fac[i])%MOD;
} inline long long ksm(long long num,long long k)
{
long long ret=;
for(;k;k>>=,num=num*num%MOD)if(k&)ret=ret*num%MOD;
return ret;
} int main()
{
int T=getint();
init();
while(T--)
{
n=getint(),K=getint();
if(n<=K+)printf("%d\n",sum[min(n,1ll*(MOD-))]);
else if(K+>=MOD)printf("%d\n",sum[MOD-]);
else
{
int k=n-K,ans=sum[K-];
int A=1ll*K*(K+)%MOD;
int inv=ksm(A-,MOD-);
ans=(ans+1ll*fac[K]*(ksm(A,k/+)-)%MOD*inv%MOD)%MOD;
ans=(ans+1ll*fac[K]*(ksm(A,(k-)/+)-)%MOD*(K+)%MOD*inv%MOD)%MOD;
printf("%d\n",ans);
}
}
}

20200102模拟赛 问题A 排列的更多相关文章

  1. Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

    字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...

  2. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  3. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  4. Shallwe学长的模拟赛

    NOIP Simulated Test 这个名字一听就很高端. T1:sGCD:http://uoj.ac/problem/48 题意概述:给定一个长度为$n$的序列,求$sgcd(a_1,a_i)$ ...

  5. 2016-06-19 NOIP模拟赛

          2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...

  6. 2014-11-3 NOIP模拟赛2

    NOIP 2014 水题模拟赛 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 数列 刷漆 排队 英文题目与子目录名 seq paint layout 可执行文件名 seq paint l ...

  7. NOIP2017提高组 模拟赛15(总结)

    NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...

  8. NOIP2017提高组模拟赛 7(总结)

    NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...

  9. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

随机推荐

  1. Linux 内核驱动支持什么设备

    struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个 列表被 USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当 ...

  2. linux中inode的理解

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...

  3. 人生苦短,我用Python(4)

    1.创建数值元组: 在Python中,使用tuple()函数直接将range()函数循环出来的结果转换为数值元组. tuple(data) #tuple()函数的基本语法 data表示可以转换为元组的 ...

  4. spring整合springMVC、mybatis、shiro

    jar包: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding& ...

  5. 【题解】ARC101F Robots and Exits(DP转格路+树状数组优化DP)

    [题解]ARC101F Robots and Exits(DP转格路+树状数组优化DP) 先删去所有只能进入一个洞的机器人,这对答案没有贡献 考虑一个机器人只能进入两个洞,且真正的限制条件是操作的前缀 ...

  6. map类型转为实体类

    BareBaseRequest fromJson = JSON.parseObject(JSON.toJSONString(map), BareBaseRequest.class);

  7. 【C++】递归 课后习题3-13、3-14

    // // main.cpp // 3-13递归Fibonacci级数 // // Created by T.P on 2018/3/21. // Copyright © 2018年 T.P. All ...

  8. TCP状态机:当服务端主动发FIN进TIME_WAIT,客户端源端口复用会发生什么

    0X01 正常情况下TCP连接会通过4次挥手进行拆链(也有通过RST拆除连接的可能,见为什么服务器突然回复RST--小心网络中的安全设备),下图TCP状态机展示了TCP连接的状态变化过程: 我们重点看 ...

  9. 大数据框架开发基础之Zookeeper入门

    Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统.构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题.例如,集群中的节点在相互通 ...

  10. linux入门系列3--常见的linux远程登陆管理工具

    服务器一般是云服务器或者放置在机房,我们日常工作中通过远程连接工具连接到服务器进行操作,这类工具很多(如SecureCRT.XShell.Putty.FinallShell.TeamViewer以及w ...