正题

题目链接:
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∏k​pi​pi​−1​
n!∏i=1kpi−1pin!\prod_{i=1}^k\frac{p_i-1}{p_i}n!i=1∏k​pi​pi​−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]沙拉公主的困惑【线性筛,欧拉函数,逆元】相关推荐

  1. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...

  2. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  3. 埃氏筛 线性筛(欧拉筛) 算法解析

    埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...

  4. 素数的线性筛法java,埃氏筛 线性筛(欧拉筛) 算法解析

    埃氏晒 埃拉托斯特尼筛法,简称埃氏晒,是一种用来求自然数n以内的全部素数. 他的基本原理是,如果我们要获得小于n的所有素数,那就把不大于根号n的所有素数的倍数剔除. 埃氏晒的原理很容易理解,一个合数, ...

  5. 为什么线性筛欧拉函数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 ...

  6. [模板] 线筛欧拉函数

    今天复习了一些数学方面的东西,线性筛欧拉是个很重要的东西,先贴代码,免得以后又忘了. #include <iostream> #include <cstdlib> typede ...

  7. bzoj2186【SDOI2008】沙拉公主的困惑

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec   Memory Limit: 259 MB Submit: 2363   Solved: 779 [ Submi ...

  8. φ(1)=1 [Sdoi2008]沙拉公主的困惑

    问题 F: [Sdoi2008]沙拉公主的困惑 时间限制: 1 Sec 内存限制: 259 MB 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘 ...

  9. [bzoj2186]沙拉公主的困惑

    2186 沙拉公主的困惑 Time Limit: 10 Sec   Memory Limit: 259 MB Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有 ...

最新文章

  1. Ascend昇腾计算
  2. mysql case设固定值_MySQL CASE语句将自定义值放置为NULL
  3. python3.7安装wordcloud_Python中的wordcloud库安装问题及解决方法
  4. CSS 编码中超级有用的工具集合
  5. 吴恩达DeepLearningCourse4-卷积神经网络
  6. 内连接 左连接 右连接 交叉连接的区别
  7. AI论文解读丨融合视觉、语义、关系多模态信息的文档版面分析架构VSR
  8. 建立mysql服务器连接失败_解决项目启动无法创建到数据库服务器的连接错误
  9. c# json 汉字乱码_json.net中文乱码问题
  10. Unity 插件之 Highlighting 高亮插件
  11. 人类微笑表情识别(HOG算法)
  12. 同花顺python_同花顺python
  13. “智”在这里,图扑软件解码智慧选煤厂
  14. github 安装浏览器导航插件Octotree
  15. xp系统usb android,xp系统usb网络共享怎么设置,xp系统usb手机网络共享设置方法
  16. 2019 大前端是什么,我们该学什么?
  17. 谷歌邮箱SMTP Password:SMTP授权码如何获得
  18. odoo:开源 ERP/CRM 入门与实践
  19. 计算机开机发出长滴,在电脑开机时滴的一声,怎么去掉
  20. 10代cpu能装服务器系统不,第10代CPU可以装Windows7吗

热门文章

  1. php如果字符串有1 3 5,PHP常用字符串函数小结
  2. java printwriter 文件_java – 如何使用printwriter创建和写入文件
  3. 如何查询服务器是否安装系统时间,如何查看系统当前的NTP配置?
  4. linux应用与管理,Linux操作系统应用与管理
  5. html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径
  6. Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
  7. readyread信号不触发_触发器型PFD与传统型PFD性能仿真对比
  8. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
  9. [剑指offer]面试题31:连续子数组的最大和
  10. 《C++ Primer》7.3.2节练习