求 \(K\) 是多少个 \(n\) 元置换的周期。\(T\leq 100, n\leq 50, K \leq 10^{18}\)

Solution

置换可以被试做若干个环组成的有向图,于是考虑 dp,设 \(f[i]\) 表示 \(n=i\) 时的答案,则

\[f[i]=\sum_{j=1}^n [j|K] \cdot C_{i-1}^{j-1} \cdot (j-1)!\cdot f[i-j]
\]

#include <bits/stdc++.h>
using namespace std; #define int long long const int mod = 998244353;
const int N = 105;
int t,n,k,f[N],c[N][N],frac[N]; signed main() {
frac[0]=1;
for(int i=1;i<=100;i++) frac[i]=(frac[i-1]*i)%mod;
for(int i=0;i<=100;i++) c[i][0]=1;
for(int i=1;i<=100;i++) {
for(int j=1;j<=i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
cin>>t;
while(t--) {
cin>>n>>k;
memset(f,0,sizeof f);
f[0]=1;
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++) {
if(k%j==0) {
f[i]+=c[i-1][j-1]*frac[j-1]%mod*f[i-j]%mod;
f[i]%=mod;
}
}
}
cout<<f[n]<<endl;
}
}

Wannafly Winter Camp 2020 Day 6J K重排列 - dp的更多相关文章

  1. Wannafly Winter Camp 2020 Day 6I 变大! - dp

    给定一个序列,可以执行 \(k\) 次操作,每次选择连续的三个位置,将他们都变成他们的最大值,最大化 \(\sum a_i\) 需要对每一个 \(k=i\) 输出答案 \(n \leq 50, a_i ...

  2. Wannafly Winter Camp 2020 Day 6D 递增递增 - dp,组合数学

    给定两个常为 \(n\) 的序列 \(l_i,r_i\),问夹在它们之间 ( \(\forall i, l_i \leq a_i \leq r_i\) ) 的不降序列的元素总和. Solution 先 ...

  3. Wannafly Winter Camp 2020 Day 7D 方阵的行列式 - 数学

    于是去弄了个板子来 #include <bits/stdc++.h> using namespace std; #define int long long const int mod = ...

  4. Wannafly Winter Camp 2020 Day 7A 序列 - 树状数组

    给定一个全排列,对于它的每一个子序列 \(s[1..p]\),对于每一个 \(i \in [1,p-1]\),给 \(s[i],s[i+1]\) 间的每一个值对应的桶 \(+1\),求最终每个桶的值. ...

  5. Wannafly Winter Camp 2020 Day 6A Convolution - NTT

    求 \(\sum_{i=1}^n \sum_{j=1}^n 2^{a_ia_j}\) Solution 化简一下 \[ 2^{a_ia_j} = p^{(a_i+a_j)^2-a_i^2-a_j^2} ...

  6. Wannafly Winter Camp 2020 Day 5C Self-Adjusting Segment Tree - 区间dp,线段树

    给定 \(m\) 个询问,每个询问是一个区间 \([l,r]\),你需要通过自由地设定每个节点的 \(mid\),设计一种"自适应线段树",使得在这个线段树上跑这 \(m\) 个区 ...

  7. Wannafly Winter Camp 2020 Day 5F Inversion Pairs - 拉格朗日插值,dp

    给定 \(n \leq 10^7\),求所有 \(n\) 的全排列的逆序对个数的 \(k \leq 100\) 次方和 Solution \(f[i][j]\) 表示 \(i\) 个元素,逆序对个数为 ...

  8. Wannafly Winter Camp 2020 Day 5J Xor on Figures - 线性基,bitset

    有一个\(2^k\cdot 2^k\) 的全零矩阵 \(M\),给出 \(2^k\cdot 2^k\) 的 \(01\) 矩阵 \(F\),现在可以将 \(F\) 的左上角置于 \(M\) 的任一位置 ...

  9. Wannafly Winter Camp 2020 Day 5G Cryptographically Secure Pseudorandom Number Generator - 分块

    多组数据,给定质数 \(p\) ,求所有 \(x\) 使得 \(f(x)=\min_{k=2}^x f(k)\) ,其中 \(f(x)=x^{-1}\) 所有 \(p\) 在 \([1,10^9]\) ...

随机推荐

  1. C语言遇到的关于清除标准输入缓冲区的问题[编程入门]

    关于标准输入缓冲区的一个易犯的小错误 之前写了个简易的登录程序,但显然这不像写Java时那么容易(只要思路对,基本没问题).一不留神就出现了小BUG! 以下是错误的源代码: #include < ...

  2. Dubbo(三):深入理解Dubbo源码之如何实现服务引用

    一.前言 前面讲了服务是如何导出到注册中心的.其实Dubbo做的一件事就是将服务的URL发布到注册中心上.那现在我们聊一聊消费者一方如何从注册中心订阅服务并进行远程调用的. 二.引用服务时序图 首先总 ...

  3. Qt qApp

    qApp A global pointer referring to the unique application object. It is equivalent to the pointer re ...

  4. java设计模式5——适配器模式

    java设计模式5--适配器模式 1.结构型模式介绍 1.1.作用 从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类: 适配器模式 代理模式 桥接模式 装饰模式 组合模式 ...

  5. CodeIgniter框架使用总结

    CodeIgniter框架 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中 ...

  6. c#设计模式读书博客

    第一次在博客园撸博客,也是为了鞭策自己去学习进步,过年之后买了一本<C#设计模式>这是我一直很想去学习的一本书.然后用博客记录我的学习历程,并且分享给需要的人.这本书记录的设计模式有23种 ...

  7. kubernetes(14):k8s基于NFS部署storageclass实现pv自动供给

    k8s基于NFS部署storageclass实现pv自动供给 https://www.cnblogs.com/Smbands/p/11059843.html https://www.jianshu.c ...

  8. logstash 配置文件语法

    需要一个配置文件 管理输入.过滤器和输出相关的配置.配置文件内容格式如下: # 输入 input { ... } # 过滤器 filter { ... } # 输出 output { ... } 先来 ...

  9. shell脚本 定期删除日志

    定期删除日志: 然后建立清除日志文件的shell脚本,文件名为clean_log只保留最近三天的日志     #! /bin/bashlogdir=/var/log/httpdcd ${logdir} ...

  10. 浮动和包含框的关系,伪元素after解决高度塌陷

    浮动会使元素尽量向左或向右移动,直到碰到包含框或另外一个浮动元素的盒子模型的边缘 包含框并不会改变里面浮动元素的宽高,浮动元素宽高不会限制在包含块以内 <!DOCTYPE html> &l ...