bzoj2186,P2155-[SDOI2008]沙拉公主的困惑【线性筛,欧拉函数,逆元】
正题
题目链接:
https://www.lydsy.com/JudgeOnline/problem.php?id=2186
https://www.luogu.org/problem/P2155
题目大意
求∑i=1n!((i,m!)==1)\sum_{i=1}^{n!}((i,m!)==1)i=1∑n!((i,m!)==1)
解题思路
因为gcd(m!,i)=1⇒gcd(m!,i+m!)=1gcd(m!,i)=1\Rightarrow gcd(m!,i+m!)=1gcd(m!,i)=1⇒gcd(m!,i+m!)=1所以这个互质的个数是一循环节。而又因为n≥mn\geq mn≥m所以答案就是
n!m!φ(m!)\frac{n!}{m!}\varphi(m!)m!n!φ(m!)
而因为m!m!m!质因数分解后是包括1∼m1\sim m1∼m里的所有素数所以有
⇒n!m!m!∏i=1kpi−1pi\Rightarrow\frac{n!}{m!}m!\prod_{i=1}^k\frac{p_i-1}{p_i}⇒m!n!m!i=1∏kpipi−1
n!∏i=1kpi−1pin!\prod_{i=1}^k\frac{p_i-1}{p_i}n!i=1∏kpipi−1
线性筛素数+线性推逆元预处理即可
时间复杂度O(m+T)O(m+T)O(m+T)
codecodecode
#pragma GCC optimize(2)
%:pragma GCC optimize(3)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=10000000;
int n,m,cnt,prime[N+10],inv[N+10];
int Phi[N+10],Phinv[N+10],Fac[N+10],pos[N+10],p,T;
bool v[N+10];
int main()
{v[1]=1;scanf("%d%d",&T,&p);for(int i=2;i<=N;i++){pos[i]=pos[i-1];if(!v[i]) prime[++cnt]=i,pos[i]++;for(int j=1;j<=cnt&&i*prime[j]<=N;j++){v[prime[j]*i]=1;if(!(i%prime[j])) break;}}inv[1]=Phi[0]=Phinv[0]=Fac[1]=1;for(int i=2;i<=N;i++){inv[i]=(long long)(p-p/i)*inv[p%i]%p;Fac[i]=(long long)Fac[i-1]*i%p;}for(int i=1;i<=cnt;i++){Phi[i]=(long long)Phi[i-1]*(prime[i]-1)%p;Phinv[i]=(long long)Phinv[i-1]*inv[prime[i]]%p;}while(T--){scanf("%d%d",&n,&m);printf("%d\n",(long long)Fac[n]*Phi[pos[m]]%p*Phinv[pos[m]]%p);}
}
bzoj2186,P2155-[SDOI2008]沙拉公主的困惑【线性筛,欧拉函数,逆元】相关推荐
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
- 埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
- 素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析
埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...
- 为什么线性筛欧拉函数i%prime[j]==0的时候phi[i*prime[j]]=phi[i]*prime[j]
看贾志鹏线性筛的时候想起来的. 我有一个繁琐的证明- -. 证明ϕ(pm)=p×ϕ(m),p为素数,m∈Z\phi(pm)=p\times\phi(m),p为素数,m\in \Bbb Z. 设 m=p ...
- [模板] 线筛欧拉函数
今天复习了一些数学方面的东西,线性筛欧拉是个很重要的东西,先贴代码,免得以后又忘了. #include <iostream> #include <cstdlib> typede ...
- bzoj2186【SDOI2008】沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2363 Solved: 779 [ Submi ...
- φ(1)=1 [Sdoi2008]沙拉公主的困惑
问题 F: [Sdoi2008]沙拉公主的困惑 时间限制: 1 Sec 内存限制: 259 MB 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘 ...
- [bzoj2186]沙拉公主的困惑
2186 沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有 ...
最新文章
- Ascend昇腾计算
- mysql case设固定值_MySQL CASE语句将自定义值放置为NULL
- python3.7安装wordcloud_Python中的wordcloud库安装问题及解决方法
- CSS 编码中超级有用的工具集合
- 吴恩达DeepLearningCourse4-卷积神经网络
- 内连接 左连接 右连接 交叉连接的区别
- AI论文解读丨融合视觉、语义、关系多模态信息的文档版面分析架构VSR
- 建立mysql服务器连接失败_解决项目启动无法创建到数据库服务器的连接错误
- c# json 汉字乱码_json.net中文乱码问题
- Unity 插件之 Highlighting 高亮插件
- 人类微笑表情识别(HOG算法)
- 同花顺python_同花顺python
- “智”在这里,图扑软件解码智慧选煤厂
- github 安装浏览器导航插件Octotree
- xp系统usb android,xp系统usb网络共享怎么设置,xp系统usb手机网络共享设置方法
- 2019 大前端是什么,我们该学什么?
- 谷歌邮箱SMTP Password:SMTP授权码如何获得
- odoo:开源 ERP/CRM 入门与实践
- 计算机开机发出长滴,在电脑开机时滴的一声,怎么去掉
- 10代cpu能装服务器系统不,第10代CPU可以装Windows7吗
热门文章
- php如果字符串有1 3 5,PHP常用字符串函数小结
- java printwriter 文件_java – 如何使用printwriter创建和写入文件
- 如何查询服务器是否安装系统时间,如何查看系统当前的NTP配置?
- linux应用与管理,Linux操作系统应用与管理
- html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径
- Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
- readyread信号不触发_触发器型PFD与传统型PFD性能仿真对比
- [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
- [剑指offer]面试题31:连续子数组的最大和
- 《C++ Primer》7.3.2节练习