[Jzokj 1038.【SCOI2009】游戏

题目大意

windywindywindy学会了一种游戏。 对于111NNN这N个数字,都有唯一且不同的111NNN的数字与之对应。 最开始windywindywindy把数字按顺序1,2,3,……,N1,2,3,……,N123N写一排在纸上。 然后再在这一排下面写上它们对应的数字。 然后又在新的一排下面写上它们对应的数字。 如此反复,直到序列再次变为1,2,3,……,N1,2,3,……,N123N。 这时,我们就有若干排1到N的排列。 现在windywindywindy想知道,对于所有可能的对应关系,有多少种可能的排数。

题目解析

仔细分析数字的对应关系,可以发现这 NNN 个数会组成很多个环。设有 KKK 个环,每 个 环 的 长 度 为 l[i]l[i]l[i] , 明 显 的 , 他 们 最 终 还 原 为 原 序 列 的 排 数 为LCM(l[1],l[2],l[3],...,l[k])LCM(l[1],l[2],l[3],...,l[k])LCM(l[1],l[2],l[3],...,l[k])。设这个排数为 AAA,不妨把 AAA 分解质因数,令A=P1cA=P_1^cA=P1c1^11∗P1c*P_1^cP1c2^22∗...∗*...*...PkcP_k^cPkck^kk

由于知道互质的数的lcmlcmlcm最大,所以令序列lll互质,即全部为质数,所以用到DPDPDP

f[i,j]f[i,j]f[i,j]表示前 iii 个质数,总和为 jjj 的方案数,那么 f[i,j]=∑f[i−1,j−prime[i]k]f[i,j]=∑f[i-1,j-prime[i]^k]f[i,j]=f[i1,jprime[i]k],先把 nnn 以内的质数筛出来,再求一遍 DPDPDP,答案就是∑f[质数总数,i]∑f[质数总数,i]f[,i]

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,pi,ans;
ll p[1005],f[1005][1005];
bool vis[1005];
int main()
{
	cin>>n;
	for(int i=2;i<=n;i++)
	 if(!vis[i])
	 {
	   p[++pi]=i;
	   for(int j=i*2;j<=n;j+=i)
	    vis[j]=1;
	 }
	f[0][0]=1;
	for(int i=1;i<=pi;i++)
	{
	  for(int j=0;j<=n;j++) f[i][j]=f[i-1][j];
	  for(int j=p[i];j<=n;j*=p[i])
	   for(int k=j;k<=n;k++)
	    f[i][k]+=f[i-1][k-j];
	}
	for(int i=0;i<=n;i++) ans+=f[pi][i];
	cout<<ans;
}
内容概要:文章阐述了构建安全教育体系以应对2025年挑战的目标、原则、内容设计、实施路径、预期成效及保障措施。面对日益复杂的社会安全形势,文章提出通过系统化、科学化、人性化的安全教育体系提升全民安全意识应急能力。该体系涵盖知识普及、技能实训、文化培育三个模块,采用沉浸式学习工具、模块化训练、跨领域协作演练等方式。实施路径分为体系构建(2023-2024年)、试点推广(2024-2025年)、全面覆盖(2025年及以后)三个阶段。预期成效包括提升公众安全素养、降低事故发生率、增强社会韧性。保障措施涉及政策、资源、技术和评估四个方面,确保体系的有效运行。 适合人群:社会各界人士,特别是教育工作者、应急管理从业者、政策制定者以及关注公共安全的个人和组织。 使用场景及目标:①适用于各级学校、企业及社区的安全教育规划实施;②为政策制定者提供构建安全教育体系的参考框架;③帮助教育工作者设计和优化安全教育课程活动;④提升公众的安全意识应急能力,降低安全事故的发生率。 其他说明:本文不仅提供了详细的构建方案,还强调了科学性、系统性、人本性和预见性的核心原则,旨在通过多维度、多层次的安全教育实践,推动安全文化深入人心,为社会的可持续发展奠定坚实基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值