DP. 每种排法的长度对应所有循环节长度的最小公倍数. 所以排法总数为和为n的几个数的最小公倍数的总数. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; + ; int cnt,n; long long f[maxn][maxn]; int prime[maxn]; bool not_prime[maxn]; void get_prime(int n) { ; i &…
题意: 找环 有多少种不同的排列 使排列数目为n 题解: 考虑dp f[i][j]表示前i个质数,和为j的方案数 然后转移一下即可 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int n,tot,mark[N],pri[N]; ll ans,f[N][N]; int main() { scanf("%d",&n); ;i<N;i++) { if (!mark[…