当前位置: 首页 > news >正文

洛谷 P6280 [USACO20OPEN] Exercise G

题目来源于:洛谷

题目本质:dp,素数筛法,质数

本题与P4161基本一模一样

首先,分析题目发现,某个排列的需要进行恰好 K 步变回原样,这个时候K的值就是这个排序中各个环的长的的最小公倍数(lcm)。然后需要计算所有K的和,就是计算所有符合条件的质数的乘积的和。其次根据唯一分解,一些数的最小公倍数就是除了1以外其它各个数分解质因数后各个质数的最大次幂相乘。最后,枚举每个质数取几个的情况,设dp(i,j)为用了前i 个质数组成的环的长度的和为j 的时候的所有满足条件的K的值。

完整代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e4+5;
int p[N],c[N];		//p[i]表示第i个质数,c[i]表示最多能用几个
ll dp[N][N];		//dp[i][j]前i个物品拼成面值为j 
int isp(int x){if(x==1){return 0;}for(int i=2;i*i<=x;i++){if(x%i==0){return 0;}}return 1; 
}
int main(){int n,m;int cnt=1;cin>>n>>m;for(int i=2;i<=n;i++){if(isp(i)){p[cnt]=i;c[cnt]=0;int x=i;while(x<=n){c[cnt]++;x*=i;	}cnt++; }}memset(dp,0,sizeof(dp));dp[0][0]=1;		//将数组初始化 for(int i=1;i<cnt;i++){for(int k=0;k<=n;k++){dp[i][k]=dp[i-1][k];}for(int k=p[i];k<=n;k++){int x=p[i];for(int j=1;j<=c[i]&&x<=k;j++){dp[i][k]=(dp[i][k]+(dp[i-1][k-x]*x)%m)%m;		//第i个质用j次,x=p[i]^j x*=p[i];				}}	}ll ans=0;for(int i=2;i<=n;i++){ans=(ans+dp[cnt-1][i])%m;}printf("%lld\n",ans+1);return 0;
} 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】
  • Docker最佳实践进阶(二):Docker Compose容器编排
  • conda 常见使用命令详解
  • 单例模式下的自动内存释放和模板
  • 【C++初阶】:C++入门篇(一)
  • 计算机网络 —— 物理层
  • 了解Android
  • WPF 中,ControlTemplate 和 DataTemplate 是两种不同类型的模板和区别
  • 网络工程师学习笔记(一)
  • Unity Pro安装教程
  • Debezium系列之:记录一次SQLServer数据库数据不采集,恢复采集造成下游承压的情况,以及相对应的详细解决方案
  • USART————单字节串口的发送和发送接收
  • STM32——I2C和SPI波形分析
  • uniapp中节点信息的使用
  • 使用Dynamic Provision的PV需要Kubernetes集群管理员和用户分别做什么?
  • 深入了解以太坊
  • 2019年如何成为全栈工程师?
  • android 一些 utils
  • nginx 负载服务器优化
  • Otto开发初探——微服务依赖管理新利器
  • rabbitmq延迟消息示例
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Web Storage相关
  • 汉诺塔算法
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 入手阿里云新服务器的部署NODE
  • 软件开发学习的5大技巧,你知道吗?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 微信开放平台全网发布【失败】的几点排查方法
  • #define与typedef区别
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .net网站发布-允许更新此预编译站点
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .net中应用SQL缓存(实例使用)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [AR Foundation] 人脸检测的流程
  • [C++] 轻熟类和对象
  • [C语言]——分支和循环(4)
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例
  • [HNOI2015]实验比较
  • [HZNUCTF 2023 preliminary]ppppop