[欧拉函数] Bzoj P2186 沙拉公主的困惑
Description
大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。
题解
- gcd(i,m!)=1所以gcd(i+m!,m!)=1
- 所以每m!个所含的与m!互质的数的个数是一样的
- 所以φ(m!)*n!/m!
- 然后就线性筛就好了
代码
1 #include <cstdio> 2 #include <iostream> 3 #define N 10000010 4 #define ll long long 5 using namespace std; 6 int T,mo,n,m,ans[N],fac[N],inv[N],p[N],bz[N]; 7 int main() 8 { 9 scanf("%d%d",&T,&mo),fac[1]=inv[1]=ans[1]=1; 10 for (int i=2;i<=N;i++) fac[i]=(ll)fac[i-1]*i%mo,inv[i]=(mo-(ll)mo/i*inv[mo%i]%mo); 11 for (int i=2;i<=N;i++) 12 { 13 if (!bz[i]) p[++p[0]]=i; 14 for (int j=1;p[j]*i<=N&&j<=p[0];j++) 15 { 16 bz[p[j]*i]=1; 17 if (i%p[j]==0) break; 18 } 19 } 20 for (int i=2;i<=N;i++) 21 { 22 ans[i]=ans[i-1]; 23 if (!bz[i]) ans[i]=(ll)ans[i]*(i-1)%mo*inv[i%mo]%mo; 24 } 25 while (T--) scanf("%d%d",&n,&m),printf("%d\n",(ll)fac[n]*ans[m]%mo); 26 }
转载于:https://www.cnblogs.com/Comfortable/p/11319878.html
[欧拉函数] Bzoj P2186 沙拉公主的困惑相关推荐
- 【沙拉查词】沙拉查词配置教程——如何实现截图OCR翻译、截图翻译?
一.问题背景 2022年12月16日,沙拉查词仍然没有截图翻译的功能. 这个功能,在百度翻译上虽然能够实现,但是要额外下一个软件和挂在后台,总是觉得麻烦. 二.解决方法 如果你是一个quicker软件 ...
- 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- bzoj 2186: [Sdoi2008]沙拉公主的困惑
Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2463 Solved: 820 [Submit][Status][Discuss] Descrip ...
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...
- bzoj 1409 Password 矩阵快速幂+欧拉函数
可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...
- BZOJ - 2186 欧拉函数
题目的意思大概是求1~N!中和M!互质的数的个数 因为对欧拉函数理解不够深刻所以我是分析得到结果的: 当N<=M的时候显然符合要求的数的个数为0: 当N>M的时候我们要求的是1~N!中不含 ...
- bzoj 3884: 上帝与集合的正确用法(欧拉函数)
3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 2574 Solved: 1151 [Submit][Status] ...
- bzoj 2705: [SDOI2012]Longge的问题(欧拉函数)
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 3077 Solved: 1914 [Submit ...
- bzoj 2818 欧拉函数
思路:就是对于某个数q,跟他互质的数p,kp和kq的最大公约数是k,那么这个数能组成的答案的数量就是phi[i]乘以某个质数,且乘积小于n 基于这种思路写下这个代码 #include <cstd ...
最新文章
- Scala使用JUnit4单元测试
- 华为公布鸿蒙2.0内测清单,华为鸿蒙操作系统2.0版支持的设备清单流出,荣耀30s...
- FarPoint表格数字框中小数点位数的设置
- 素材资源解析系统源码 代下程序 第三方平台下载站程序千图网千库网等素材网站下载网站
- FudanNLP java -based
- HTTP权威指南 - robots.txt文件
- 建站百科|企业网站logo设计指南
- 手机二维码~~~ZXing简介
- 扎克伯格:锻造一只硕大无朋的能力“碗”
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
- js 使用 canvas 绘制地图路线
- java replica set_Kubernetes对象之ReplicaSet
- 2016 LLVM Developers’ Meeting - Experience from Johannes Doerfert, Travel Grant Recipient
- 微信小程序开发入门与实战 ②(小程序与前端开发的区别)
- 论文阅读《Calculation Method for Visual Navigation Integrity Monitoring》
- IT人员要善用图表来说明问题
- Netty之编解码技术(四)
- 软考网络管理员-华为设备命令学习笔记
- WebMvcConfigurerAdapter过时
- 【Github】fatal: remote error: You can't push to git 解决办法