jzoj5931
根據打表可得,對於n的情況
任意一個首位!=1的排列時,則其答案-1可以與首位為1的情況對應
當n=4時
排列 答案
1 2 3 4 ------ 0
1 2 4 3 ------ 1
1 3 2 4 ------ 1
1 3 4 2 ------ 2
1 4 2 3 ------ 2
1 4 3 2 ------ 1
2 1 3 4 ------ 1
2 1 4 3 ------ 2
2 3 1 4 ------ 2
2 3 4 1 ------ 3
2 4 1 3 ------ 3
2 4 3 1 ------ 2
3 1 2 4 ------ 2
3 1 4 2 ------ 3
3 2 1 4 ------ 1
3 2 4 1 ------ 2
3 4 1 2 ------ 2
3 4 2 1 ------ 3
4 1 2 3 ------ 3
4 1 3 2 ------ 2
4 2 1 3 ------ 2
4 2 3 1 ------ 1
4 3 1 2 ------ 3
4 3 2 1 ------ 2
記f[i]表示i個數,所有i個數可以組成的排列的答案總和
則我們發現,有(n-1)(n-1)!項首位不等於1的排列,對答案有1的貢獻
除此之外,我們會發現,首項為1的數由於有n個數(包括自己)與其對應
所以對答案有nf[i-1]的貢獻
所以f[i]=if[i-1]+(i-1)(i-1)!
注意要逆元
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mo 998244353ll
ll t,f[10000010],n,jc[10000010];
ll qp(ll x,ll y){
ll r=1;
x%=mo;
while(y){
if(y&1)r=r*x%mo;
y>>=1;
x=(x*x)%mo;
}
return r;
}
int main(){
freopen("inverse.in","r",stdin);
freopen("inverse.out","w",stdout);
jc[0]=1;
for(ll i=1;i<=10000010;i++)
jc[i]=jc[i-1ll]*i%mo;
for(ll i=1;i<=10000010;i++)
f[i]=(i*f[i-1ll]%mo+(i-1ll)*jc[i-1ll]%mo)%mo;
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
printf("%lld\n",f[n]*qp(jc[n],mo-2ll)%mo);
}
}
jzoj5931的更多相关文章
随机推荐
- Android中webview跟JAVASCRIPT中的交互
在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面 ...
- sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ?
sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ? sql server 2008安装的时候选NT A ...
- SQL查询优化的一些建议
使用批量查询,而不是N次循环查询! 重复的数据,不要重复获取: 根据需要,按需要获取表字段,而不是SELECT *: 针对频繁的搜索字段,建立必要的索引,以加快查询速度: 使用关联查询,而不是粗暴地类 ...
- 实现WIFI MAC认证与漫游
前言 单位里有10来个网件的AP(WNAP210),需要对接入端(主要是手机)进行MAC认证,原来采用AP本地MAC认证,但是人员经常变动(离职),另外人员的岗位(流水线)也经常调整,这样就需在变动后 ...
- arduino uno r3 + SIM900 + USB打火机 实现电话触发点火
需求来源 1.儿子过完年6岁,喜欢玩烟花,但是胆子小,于是我就负责点火,从年前26到大年初八,每天晚上要给儿子点鞭炮啊点鞭炮. 2.这边过年要打关门炮跟开门炮,大年初一凌晨还要起来帮老妈点鞭炮,说实在 ...
- 按条件设置gridcontrol 单元格属性
等价代码设置:(注意这里使用都是FieldName, 即绑定对象的字段名) var cn = new StyleFormatCondition(FormatConditionEnum.Expressi ...
- 【Unity】2.3 项目浏览器和资源的组织
分类:Unity.C#.VS2015 创建日期:2016-03-29 一.Project-工程浏览器 前面我们说过,Unity中的Project View(称为工程浏览器)相当于VS2015中的解决方 ...
- UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在 ...
- UVa 11464 Even Parity (二进制法枚举)
题意:给你一个n*n的01矩阵,让你把最少的0变成1,使得每个元素的上,下,左,右的元素(如果有的话)之和均为偶数. 析:最好想的的办法就是暴力,就是枚举每个数字是变还是不变,但是...时间复杂度也太 ...
- 一个用css写出来的下拉菜单
1 <style> 2 /* css*/ 3 #body{ 4 float: left; 5 } 6 #xialakuang{ 7 background-color:#f9f9f9; 8 ...