nssl1176-轨道【数论,Dp】

正题


题目大意

给出n,m,kn,m,kn,m,k
v=∏i=1nai(ai∈N+,ai&lt;=m)k(gcd(v,k)=1)v=\frac{\prod_{i=1}^na_i(a_i\in N_+,a_i&lt;=m)}{k}(gcd(v,k)=1)v=ki=1nai(aiN+,ai<=m)(gcd(v,k)=1)
aaa的方案个数mod10007mod\ 10007mod 10007的值


解题思路

fi,jf_{i,j}fi,j表示前i个数的乘积和k的最大公约数为k的第j个约数时的方案个数。
动态转移方程:
fi,j=∑k=1prcj%prck=0fi−1,k∗f1,prcnprcj/prckf_{i,j}=\sum_{k=1}^{prc_j\%prc_k=0}f_{i-1,k}*f_{1,prcn_{prc_j/prc_k}}fi,j=k=1prcj%prck=0fi1,kf1,prcnprcj/prck
prciprc_iprci为k的第i个约数,prcniprcn_iprcni为i是k的第几个约数。
然后我们考虑如何求出1∼m1\sim m1m内有多少个数与k的最大公约数为k的第i个约数
也就是∑i=1m(gcd(i,k)==d)(d∣n)\sum_{i=1}^m (gcd(i,k)==d)(d|n)i=1m(gcd(i,k)==d)(dn)
首先
gcd(i,k)=d⇒gcd(i/d,k)=1gcd(i,k)=d\Rightarrow gcd(i/d,k)=1gcd(i,k)=dgcd(i/d,k)=1(数论基础)
我们可以考虑用容斥,我们将重复偶数次的减去,重复奇数次的加上。
之后预处理一下prcimodprcj==0prc_i\ \ mod\ \ prc_j==0prci  mod  prcj==0的情况就好了。


code

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
%:pragma GCC optimize("-fgcse")
%:pragma GCC optimize("-fgcse-lm")
%:pragma GCC optimize("-fipa-sra")
%:pragma GCC optimize("-ftree-pre")
%:pragma GCC optimize("-ftree-vrp")
%:pragma GCC optimize("-fpeephole2")
%:pragma GCC optimize("-ffast-math")
%:pragma GCC optimize("-fsched-spec")
%:pragma GCC optimize("unroll-loops")
%:pragma GCC optimize("-falign-jumps")
%:pragma GCC optimize("-falign-loops")
%:pragma GCC optimize("-falign-labels")
%:pragma GCC optimize("-fdevirtualize")
%:pragma GCC optimize("-fcaller-saves")
%:pragma GCC optimize("-fcrossjumping")
%:pragma GCC optimize("-fthread-jumps")
%:pragma GCC optimize("-funroll-loops")
%:pragma GCC optimize("-fwhole-program")
%:pragma GCC optimize("-freorder-blocks")
%:pragma GCC optimize("-fschedule-insns")
%:pragma GCC optimize("inline-functions")
%:pragma GCC optimize("-ftree-tail-merge")
%:pragma GCC optimize("-fschedule-insns2")
%:pragma GCC optimize("-fstrict-aliasing")
%:pragma GCC optimize("-fstrict-overflow")
%:pragma GCC optimize("-falign-functions")
%:pragma GCC optimize("-fcse-skip-blocks")
%:pragma GCC optimize("-fcse-follow-jumps")
%:pragma GCC optimize("-fsched-interblock")
%:pragma GCC optimize("-fpartial-inlining")
%:pragma GCC optimize("no-stack-protector")
%:pragma GCC optimize("-freorder-functions")
%:pragma GCC optimize("-findirect-inlining")
%:pragma GCC optimize("-fhoist-adjacent-loads")
%:pragma GCC optimize("-frerun-cse-after-loop")
%:pragma GCC optimize("inline-small-functions")
%:pragma GCC optimize("-finline-small-functions")
%:pragma GCC optimize("-ftree-switch-conversion")
%:pragma GCC optimize("-foptimize-sibling-calls")
%:pragma GCC optimize("-fexpensive-optimizations")
%:pragma GCC optimize("-funsafe-loop-optimizations")
%:pragma GCC optimize("inline-functions-called-once")
%:pragma GCC optimize("-fdelete-null-pointer-checks")
#include<cstdio>
#include<cmath>
#include<algorithm>
#define BPM 10007
#define N 4010
using namespace std;
int n,m,k,frct,prit,fft[N],sum,m1;
int pri[N],frc[N],ff[N][N],ys[10000001],f[N][N];
void dfs(int x,int zf,int ans)//容斥
{if(x>prit) {sum+=m1/ans*zf;return;}dfs(x+1,zf,ans);dfs(x+1,-zf,ans*pri[x]);
}
int main()
{scanf("%d%d%d",&n,&m,&k);int sk=sqrt(k);for(int i=1;i<=sk;i++){if(k%i==0){frc[++frct]=i;if(k/i>sk) frc[++frct]=k/i;}}//求约数sort(frc+1,frc+1+frct);int tmp=k;for(int i=2;i<=sk;i++){if(tmp==1) break;if(tmp%i==0){pri[++prit]=i;while(tmp%i==0) tmp/=i;}}//求质因子if(tmp!=1) pri[++prit]=tmp;sort(pri+1,pri+tmp+1);for(int i=1;i<=frct;i++){ys[frc[i]]=i;sum=0;m1=m/frc[i];dfs(1,1,1);f[1][i]=sum%BPM;}//计算f[1]for(int i=1;i<=frct;i++)for(int j=1;j<=i;j++)if(frc[i]%frc[j]==0)ff[i][++fft[i]]=j;//预处理关系for(int i=2;i<=n;i++)for(int j=1;j<=frct;j++){if(!fft[j]) continue;for(int k=1;k<=fft[j];k++)f[i][j]=(f[i][j]+f[i-1][ff[j][k]]*f[1][ys[frc[j]/frc[ff[j][k]]]])%BPM;//动态转移}printf("%d",f[n][frct]);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务~Eureka实现的服务注册与发现及服务之间的调用

微服务里一个重要的概念就是服务注册与发现技术&#xff0c;当你有一个新的服务运行后&#xff0c;我们的服务中心可以感知你&#xff0c;然后把加添加到服务列表里&#xff0c;然后当你死掉后&#xff0c;会从服务中心把你移除&#xff0c;而你作为一个服务&#xff0c;对其它…

新高考增值评价系统业务简单介绍(超详细,图文并茂)

大家好&#xff0c;我是雄雄。 文章目录一&#xff1a;基本信息1&#xff1a;学校信息2&#xff1a;教师管理1&#xff1a;下载教师模板2&#xff1a;上传教师模板3&#xff1a;查看教师数据4&#xff1a;教师信息编辑5&#xff1a;新增教师6&#xff1a;导出教师数据3&#xf…

一步一步详解高斯日记

这是有一年的蓝桥杯的题目&#xff0c;感觉挺有趣的 意思就是高斯有个习惯&#xff0c;记日期的时候喜欢只用数字来记&#xff0c;比如如果你2001年一月一日出生的话&#xff0c;你活到2002年1 月一日&#xff0c;他就会写个366。大致意思就是你现在的时间减去个出生的时间1就是…

微服务配置中心实战:Spring + MyBatis + Druid + Nacos

转载自 微服务配置中心实战&#xff1a;Spring MyBatis Druid Nacos 很多基于 Spring MVC 框架的 Web 开发中&#xff0c;Spring MyBatis Druid 是一个黄金组合&#xff0c;在此基础上如果融入一个配置中心&#xff0c;会发生什么特别的变化呢&#xff1f; 本文将通过一…

揭晓新版《Windows Sysinternals实战指南》读书积赞活动

参与新版《Windows Sysinternals实战指南》&#xff0c;读书积赞活动的一下三位同学&#xff08;想法构成&#xff0c;我zzz&#xff0c;kergee&#xff09;&#xff0c;请加我微信geffzhang&#xff0c;把姓名&#xff0c;地址和手机号发给我&#xff0c;后续给你们寄书。.NET…

ssl提高组国庆模拟赛【2018.10.5】

前言 竟然有半IOI赛制&#xff08;雾&#xff09; 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself1501501506060609090900002222015hjw2015hjw2015hjw1401401401001001004040400003332015zyf2015zyf2015zyf10010010080808020…

Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway

转载自 Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway Spring 官方最终还是按捺不住推出了自己的网关组件&#xff1a;Spring Cloud Gateway &#xff0c;相比之前我们使用的 Zuul&#xff08;1.x&#xff09; 它有哪些优势呢&#xff1f;Zuul&#xff08;1.x&…

方向、目标、改变

小叙 昨天看了一些大佬的博客&#xff0c;感觉受到了很大的激励&#xff0c;别人学编程的时间也很晚&#xff0c;想必绝大多数人学习编程的时间都是很晚&#xff0c;大学之后才学的应该不会少数&#xff0c;那些非本专业的&#xff0c;可能更晚&#xff0c;甚至毕业之后转专业…

ASP.NET Core中如何调整HTTP请求大小的几种方式

一、前言 一般的情况下&#xff0c;我们都无需调用HTTP请求的大小&#xff0c;只有在上传一些大文件&#xff0c;或者使用HTTP协议写入较大的值时&#xff08;如调用WebService&#xff09;才可能会调用HTTP最大请求值。 在ASP.NET Core 2.0中&#xff0c;它的两个宿主服务器Ke…

USACO2.1【bfs,排序,贪心,dfs,位运算】

前言 开始刷USACO的题了。 正题 刷前必备技能:OI常识,bfs,dfs,位运算,基础贪心,快速排序。 T1:城堡 TheCastleThe CastleTheCastle 评测记录: https://www.luogu.org/recordnew/lists?uid52918&pidP1457 之前写过,详见: https://blog.csdn.net/Mr_wuyongcong/article/d…

常用公有云接入——腾讯

一、ES术语表 本文档涉及的一些常用术语如下&#xff1a; 术语全称中文说明InstanceInstance实例指代一台云服务器。RegionRegion地域表示资源所在的地域&#xff0c;每个地域包含一个或多个可用区。ZoneZone可用区指腾讯云在同一 地域 内电力和网络互相独立的物理数据中心。…

csdn颜色字体的改变

一直想改变一下csdn界面字体的颜色&#xff0c;奈何csdn上没有像Word那样直接改变字体颜色的版面&#xff0c;找半天没找到&#xff0c;后来才知道必须输入代码才能改变字体颜色&#xff0c;这个就很高级了啊 <font face"微软雅黑" color#FF8C00 size2> **一…

ASP.NET Core 2.0 使用支付宝PC网站支付

前言 最近在使用ASP.NET Core来进行开发&#xff0c;刚好有个接入支付宝支付的需求&#xff0c;百度了一下没找到相关的资料&#xff0c;看了官方的SDK以及Demo都还是.NET Framework的&#xff0c;所以就先根据官方SDK的源码&#xff0c;用.NET Standard 2.0 实现了支付宝服务端…

USACO2.2【统计,dp,模拟,位运算】

正题 T1:序言页码 PrefaceNumberingPreface NumberingPrefaceNumbering 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1465 题目大意 求1∼n1\sim n1∼n的罗马数字每个字母出现的次数。 解题思路 先写一个表&#xff0c;表示这个位上出现哪个数字表示…

mysql实现查询分组查询最后一次的记录

大家好&#xff0c;我是雄雄。 前言 又好久没有写博客了&#xff0c;为什么呢&#xff1f;因为最近没怎么写代码…说起来也惭愧。 今天在项目上遇到了个需求&#xff0c;是这样的&#xff1a;我们数据库中有一表检测记录表&#xff0c;该表中存储的是所有居民每次的检测记录&…

常用公有云接入——华为

一、介绍 1、什么是弹性云服务器? 弹性云服务器是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器&#xff0c;同时它结合虚拟私有云、虚拟防火墙、数据多副本保存等能力&#xff0c;为您打造一个高效、可靠、安全的计算环境&#xff0c;确保您的服…

jenkins~集群分发功能和职责处理

jenkins的多节点集群 在进行自动化部署时&#xff0c;你可以按着它们的项目类型去进行分别部署&#xff0c;这样即可以达到负载均衡&#xff0c;又可以达到一种职责的明确&#xff0c;比如像java的项目你可以使用linux服务来进行部署&#xff08;拉代码&#xff0c;还原&#x…

nginx中配置https的步骤

大家好&#xff0c;我是雄雄。 想必大家都有过配置https的需求吧&#xff0c;今天我就来整理一下&#xff0c;如何在nginx里面配置https 这里先忽略https申请&#xff0c;一般在你申请域名的那里直接弄就行&#xff0c;下面是nginx中的配置代码&#xff1a; server {listen …

nssl1185-试卷【状态压缩】

正题 题目大意 有n张试卷m道题&#xff0c;给出每张试卷每道题的答案(A或B)&#xff0c;选择若干道题&#xff0c;要求至少有k对试卷这些题的选择不一样&#xff08;只要有一题不一样就行&#xff09; 解题思路 用二进制码表示试卷&#xff0c;用1表示A,0表示B。 然后用二进制…

爬取网页图片

前言 这几天又看了下python的视频&#xff0c;突然又对python感兴趣起来。以前只是学了下python的基础&#xff0c;感觉和其他语言没什么大的区别&#xff0c;再加上编程游戏的插件pygame一直没装上&#xff0c;遂放弃了。 最近心血来潮突然又想用python来搞游戏开发&#xff…