题目描述

对于一些长度为n的排列,将其作为一个置换,那么可能有一个自置换的次数使其回到1,2,3,...,n的情况。求对于所有能够回到1,2,3..,n的排列,不同的次数共有多少种。

题解来自黄学长

这道题可以转换一下。

试想每一个对应关系a-b为从a->b的一条边,

那么图中一定存在n条边且每个点入度出度都为1,

易证一定存在一个或几个环。

实际上排数就是这几个环大小的最小公倍数。

即求和为n的数列的最小公倍数种数。

那么可以直接DP

#include<algorithm>
#include<cstdio>
#include<cstdio>
using namespace std;
int n,tot;
int pri[];
long long ans,f[][];
bool vis[];
void getpri(){
for(int i=;i<=;i++){
if(!vis[i])pri[++tot]=i;
for(int j=;j<=tot&&pri[j]*i<=;j++){
vis[pri[j]*i]=;
if(i%pri[j]==)break;
}
}
}
int main(){
scanf("%d",&n);
getpri();
f[][]=;
for(int i=;i<=tot;i++){
for(int j=;j<=n;j++)f[i][j]=f[i-][j];
for(int j=pri[i];j<=n;j*=pri[i])
for(int k=;k<=n-j;k++)
f[i][k+j]+=f[i-][k];
}
for(int i=;i<=n;i++)ans+=f[tot][i];
printf("%lld",ans);
}

最新文章

  1. 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)
  2. 使用Crowd2.7集成Confluence5.3与JIRA6.1,并安装、破解及汉化,实现单点登录【原创】
  3. 使用MySQL制作SNP146数据库
  4. Eclipse连接SVN服务器
  5. 设计模式 ( 十六 ): Mediator中介者模式 -- 行为型
  6. fastjson 之常见的数据类型与json的相互转换
  7. PC端网页的基本构成
  8. 生成JSON数据--Gson(谷歌)方法
  9. 2018年Java实习春招总结
  10. http面试准备
  11. tar (child): bzip2: Cannot exec: No such file or directory报错
  12. Win8.1无法安装更新,提示0x800*****错误的解决方法
  13. Easyui入门视频教程 第03集---Easyui布局
  14. 理解linux 块, i节点
  15. 『Sklearn』数据划分方法
  16. 如何解决abd.exe已停止工作
  17. MoreEffectiveC++Item35 条款26: 限制某个class所能产生的对象个数
  18. 条件变量(Condition Variable)详解
  19. &lt;s:property&gt;的用法
  20. 一个tomcat部署多个应用实例总结

热门文章

  1. fatal error C1003: error count exceeds number; stopping compilation解决方法
  2. MYSQL binlog 日志内容查看
  3. Storm Spout
  4. 8年js总结
  5. ADO.NET之断开数据连接的数据库操作
  6. NetworkX-simple graph
  7. iOS面试总结(待完善)
  8. POJ-2318 TOYS 计算几何 判断点在线段的位置
  9. Noip-pj2018游记
  10. unity 调用 .dll 或 .so时遇到的问题