20200102模拟赛 问题A 排列
先说句新年好哈哈哈
今年又是颓废的一年呢。。。
(开始就满满负能量真好)


分析:
真是有趣的数学递推找规律问题呢。。。
考场上没想出来,然后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 排列的更多相关文章
- Java 第十一届 蓝桥杯 省模拟赛 字母重新排列
字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...
- 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题, ...
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- Shallwe学长的模拟赛
NOIP Simulated Test 这个名字一听就很高端. T1:sGCD:http://uoj.ac/problem/48 题意概述:给定一个长度为$n$的序列,求$sgcd(a_1,a_i)$ ...
- 2016-06-19 NOIP模拟赛
2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...
- 2014-11-3 NOIP模拟赛2
NOIP 2014 水题模拟赛 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 数列 刷漆 排队 英文题目与子目录名 seq paint layout 可执行文件名 seq paint l ...
- NOIP2017提高组 模拟赛15(总结)
NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...
- NOIP2017提高组模拟赛 7(总结)
NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...
- NOIP2017提高组模拟赛4 (总结)
NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...
随机推荐
- 【47.40%】【BZOJ 1875】[SDOI2009]HH去散步
Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1363 Solved: 646 [Submit][Status][Discuss] Descript ...
- TOJ4587:抓苹果(DP)
传送门:抓苹果 dp(i,j) = max(dp(i-1,j-1),dp(i-1,j))+当i这分钟时能否刚好移动到这棵树下. 初始化是对不移动的情况下. 代码 #include<bits/st ...
- 推荐:mysql锁 innodb下的记录锁,间隙锁,next-key锁
你需要知道的 之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁. 行锁 记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁. 生活中的间隙 ...
- js获取url参数值的方式
定义方法: function getParam(paramName) { paramValue = ""; isFound = false; paramName = paramNa ...
- 第三阶段:3.Web端产品设计:1.以用户为中心的产品设计2
从功能到体验.提供不同的附加值.
- flutter 安装环境 Mac
1.这是我第二次mac 安装 flutter环境了,但是这种东西记不住.打开写一下 有用的东西 一. ls vi 等命令 command not found原因是因为环境变量的问题,编辑profile ...
- TCP/IP||ARP/RARP
1.ARP ARP(地址解析协议)主要为IP地址到对应的硬件提供动态映射,过程是自动完成 在网络接口有一个硬件地址(48 bit),在硬件层次上的数据帧交换必须有正确的接口地址,但是32 bit 的I ...
- 页面显示jsp源码问题
问题错误在于WEB.XML 将/*改为*即可
- Eclipse+Tomcat+MAVEN开发环境配置
https://blog.csdn.net/zhshulin/article/details/30779873 补充: 1.eclipse配置tomcat window——preferences——s ...
- context:component-scan 和 mvc:annotation-driven
前言 Spring MVC 框架提供了几种不同的配置元素来帮助和指示 Spring 容器管理以及注入 bean . 常用的几个 XML 配置是 context:component-scan mvc:a ...