bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)
【题目链接】
http://www.lydsy.com/JudgeOnline/problem.php?id=2186
【题意】
若干个询问,求1..n!中与m!互质的个数。
【思路】
首先有gcd(a,b)=gcd(a+b,b),则一个与m!互素的数+m!依旧与m!互素,每m!个看作一组,则1..m!中有phi(m!)*(n!/m!)的数与m!互素。即求:
n!(1-1/p1)(1-1/p2)(1-1/p3)… mod R
=n!(1-p1)(1-p2)(1-p3)…/(p1*p2*p3…) mod R
其中p1…为m!的质因子即m以内所有的素数。
除法直接乘上一个逆元,用拓展欧几里得算法求一下。
【代码】
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; typedef long long ll;
const int N = 1e7+; int fac[N],su[N],ans[N],tot;
int n,m,R,T,vis[N]; int gcd(int a,int b,int& d,int& x,int& y)
{
if(!b) { d=a; x=; y=; }
else { gcd(b,a%b,d,y,x); y-=x*(a/b); }
}
int inv(int a,int n)
{
int d,x,y;
gcd(a,n,d,x,y);
return d==? (x+n)%n:-;
} void get_pre()
{
fac[]=;
for(int i=;i<N;i++) fac[i]=(ll)fac[i-]*i%R;
for(int i=;i<N;i++) { //快速线性筛法求素数
if(!vis[i]) su[++tot]=i;
for(int j=;su[j]*i<N&&j<=tot;j++) {
vis[i*su[j]]=;
if(i%su[j]==) break;
}
}
ans[]=;
for(int i=;i<N;i++) {
ans[i]=ans[i-];
if(!vis[i]) ans[i]=(ll)ans[i]*(i-)%R*inv(i,R)%R;
}
} int main()
{
scanf("%d%d",&T,&R);
get_pre();
while(T--) {
scanf("%d%d",&n,&m);
printf("%lld\n",(ll)fac[n]*ans[m]%R);
}
return ;
}
bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)的更多相关文章
- 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- [BZOJ 2186][Sdoi2008]沙拉公主的困惑(欧拉函数)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2186 分析: 就是要求1~n!中与m!互质的数的个数 首先m!以内的就是φ(m!) 关 ...
- bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
n>=m,所以就变成了求 ϕ(m!)∗n!/m! 而 ϕ(m!)=m!∗(p−1)/p...... p为m!的素因子,即为m内的所有素数,问题就转化为了求 n!∗(p−1)/p...... 只需 ...
- Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2560 Solved: 857[Submit][St ...
- 数学(逆元):BZOJ 2186: [Sdoi2008]沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...
- [BZOJ 2186] [Sdoi2008] 沙拉公主的困惑 【欧拉函数】
题目链接:BZOJ - 2186 题目分析 题目要求出 [1, n!] 中有多少数与 m! 互质.(m <= n) 那么在 [1, m!] 中有 phi(m!) 个数与 m! 互质,如果一个数 ...
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑 【逆元】
题意:求中互质的数的个数,其中. 分析:因为,所以,我们很容易知道如下结论 对于两个正整数和,如果是的倍数,那么中与互素的数的个数为 本结论是很好证明的,因为中与互素的个数为,又知道, ...
- bzoj 2186: [Sdoi2008]沙拉公主的困惑
#include<cstdio> #include<iostream> #define ll long long #define N 10000009 using namesp ...
- BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
题目大意:给定询问组数T和取模数P,每次询问给定两个整数n和m,求1~(n!)的数中与m!互质的数个个数模P (m<=n) 首先T<=1W,暴力肯定过不去,我们须要预处理一些东西 首先我们 ...
随机推荐
- Tomcat7.0 start Could not find the main class: org.apache.catalina.startup.Bootstrap.
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.catalina.startup.Bo ...
- JAVA学习路线图---(JAVA1234)
第一阶段-Java基础 这一阶段很重要,关系到你后面阶段的学习,所以务必把这一阶段掌握好: 如果你是0基本,我推荐一本比较好的,适合初学者看的书:明日科技的<Java从入门到精通>,最 ...
- arcgis api for javascript 出现 undefinedModule错误
一般都是script代码里面语法错误,如. .;:之类的
- *Linux之rm命令
自己瞅: [root@winner ~]# rm --help//rm-->remove用法:rm [选项]... 文件... 删除 (unlink) 文件. -f, --force 强制删除. ...
- nodejs搭配phantomjs highcharts后台生成图表
简单分享一下,后台使用nodejs结合highcharts.phantomjs生成报表图片的方法.这主要应用在日报邮件. 主要参考以下资料: http://www.highcharts.com/com ...
- 10、JPA_映射双向多对多的关联关系
双向多对多的关联关系 双向多对多的关联关系(抽象成A-B)具体体现:A中有B的集合的引用,同时B中也有对A的集合的引用.A.B两个实体对应的数据表靠一张中间表来建立连接关系. 同时我们还知道,双向多对 ...
- Eliza Doolittle lyrics Big City
Eliza Doolittle lyrics Big City 歌词很好,现在还没有,以后添加进来.
- jquery.pagination.js分页插件的使用
Pagination的相关参数: Pagination使用的核心代码: //回调函数 function pageselectCallback(page_index, j ...
- BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2440 题意:给定K.求不是完全平方数(这里1不算完全平方数)的倍数的数字组成的数字集合S ...
- R语言日期时间函数
Sys.Date( ) returns today's date. date() returns the current date and time.# print today's datetoday ...