由于n!是m!的倍数,而对于每个与m!互质且小于m!的数x,x+m!、x+2*m!……也与其互质,所以答案即为(n!/m!)*φ(m!)。

  φ(m!)=m!*∏(1-1/pi)。其中的pi即为1~m中所有质数。那么这个前缀积就可以预处理了。

  当n、m大于p的时候是可能有问题的,数据里没有就懒得讨论了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 10000010
int T,P,prime[N],exphi[N],cnt=;
int fac[N],inv[N],inv2[N];
bool flag[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj2186.in","r",stdin);
freopen("bzoj2186.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
T=read(),P=read();
fac[]=;for (int i=;i<min(P,N-);i++) fac[i]=1ll*fac[i-]*i%P;
inv[]=;for (int i=;i<min(P,N-);i++) inv[i]=(P-1ll*(P/i)*inv[P%i]%P)%P;
inv2[]=;for (int i=;i<min(P,N-);i++) inv2[i]=1ll*inv2[i-]*inv[i]%P;
flag[]=;
for (int i=;i<min(P,N-);i++)
{
if (!flag[i]) prime[++cnt]=i;
for (int j=;j<=cnt&&prime[j]*i<=N-;j++)
{
flag[prime[j]*i]=;
if (i%prime[j]==) break;
}
}
exphi[]=;
for (int i=;i<min(P,N-);i++)
if (!flag[i]) exphi[i]=1ll*exphi[i-]*(P+-inv[i])%P;
else exphi[i]=exphi[i-];
for (int i=;i<min(P,N-);i++)
exphi[i]=1ll*exphi[i]*fac[i]%P;
while (T--)
{
int n=read(),m=read();
printf("%d\n",1ll*fac[n]*inv2[m]%P*exphi[m]%P);
}
return ;
}

BZOJ2186 SDOI2008沙拉公主的困惑(数论)的更多相关文章

  1. [bzoj2186][Sdoi2008]沙拉公主的困惑——数论

    题目大意 求 \[\sum_{i = 1}^{N!} [gcd(i, M!) = 1]\] 题解 显然,题目就是求 \[N!(1-\frac{1}{p_1})(1-\frac{1}{p_2})...\ ...

  2. 【bzoj2186】: [Sdoi2008]沙拉公主的困惑 数论-欧拉函数

    [bzoj2186]: [Sdoi2008]沙拉公主的困惑 考虑当 gcd(a,b)=1 则 gcd(nb+a,b)=1 所以[1,N!]与M!互质的个数就是 筛出[1,M]所有的素数p[i] 以及逆 ...

  3. BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】

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

  4. BZOJ2186: [Sdoi2008]沙拉公主的困惑(求[1,N!]与M!互素的个数)(线性筛)

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 6103  Solved: 2060[Submit][S ...

  5. [bzoj2186][Sdoi2008]沙拉公主的困惑_数论

    沙拉公主的困惑 bzoj-2186 Sdoi-2008 题目大意:求N!中与M!互质的数的个数. 注释:$1\le N,M\le 10^7$. 想法:显然是求$\phi(M!)$.这东西其实只需要将数 ...

  6. 【数论】【欧拉函数】【筛法求素数】【乘法逆元】【快速幂取模】bzoj2186 [Sdoi2008]沙拉公主的困惑

    http://www.cnblogs.com/BLADEVIL/p/3490321.html http://www.cnblogs.com/zyfzyf/p/3997986.html 翻了翻题解,这两 ...

  7. BZOJ2186: [Sdoi2008]沙拉公主的困惑

    传送门 常规数论题,利用欧拉函数的相关性质. 题求$[1,N!]$中与$M!$互质的数的个数,且$M \leq N$.然后根据欧拉函数的相关性质很容易得出这道题的答案为$\frac{\phi (M!) ...

  8. BZOJ 2186 SDOI2008 沙拉公主的困惑 数论

    题目大意:给定询问组数T和取模数P,每次询问给定两个整数n和m,求1~(n!)的数中与m!互质的数个个数模P (m<=n) 首先T<=1W,暴力肯定过不去,我们须要预处理一些东西 首先我们 ...

  9. 【BZOJ2186】沙拉公主的困惑(数论)

    [BZOJ2186]沙拉公主的困惑(数论) 题面 BZOJ 题解 考虑答案是啥 先假设\(n=m\) 现在求的就是\(\varphi(m!)\) 但是现在\(n!\)是\(m!\)的若干倍 我们知道 ...

随机推荐

  1. c#_导出table功能

    一:第一张导出方法,简单快捷 请注意:一般表格都有真分页,查询数据时候注意把分页条件去掉#region 此处是获取的list数组 然后转table再调用ExportExcel var list=&qu ...

  2. 《javascript语言精粹》mindmap

    最近刚刚读完<javascript语言精粹>,感觉其中的内容确实给用js作开发语言的童鞋们提了个醒——js里面坑很多啊 不过,我也并不完全认同书中所讲的所有内容,有些书中认为是糟粕的特性, ...

  3. redis-4.0.2

    redis-4.0.2.tar.gz 链接:https://pan.baidu.com/s/1qj4bSgM1s2InLikugRNqKA 提取码:tozq 复制这段内容后打开百度网盘手机App,操作 ...

  4. Linux命令的那些事(三)

    回顾linux命令那些事,前面大致总结了常用的Linux命令 回顾Linux命令那些事(一) clear/mkdir/rmdir/ls/rm/pwd/cd/touch/tree/man/--help ...

  5. Vmware vSphere 开启嵌套虚拟化

    一.vSphere 6开启嵌套虚拟化 已通过vSphere Client创建一个名字为Centos 7的虚拟机,现在需要打开该虚拟机的嵌套虚拟化功能. 1.在Esxi 服务器上面开启ssh服务,并关闭 ...

  6. 第五章 if语句

    5.2条件测试 使用==判断相当: 使用!=判断不相等: 每条if语句的核心都是一个值为Tre或False的表达式,这种表达式被称为条件测试,如果条件测试的值为Ture,则执行紧跟在if语句后面的代码 ...

  7. watch命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/kaishirenshi/p/7727986.html watch 命令详解: author:headsen  chen ...

  8. Nginx 使用(server参数配置)

    文件地址nginx/conf/Nginx.conf 文件地址;nginx/conf/Nginx.conf [java] view plain copy server {# 服务名及配置,一个服务下可以 ...

  9. 第26次Scrum会议(11/14)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min.地点:东北 ...

  10. 2-Third Scrum Meeting-20151203

    任务安排 闫昊: 今日完成:请假.(编译+计组,压力有点大) 明日任务:设计本地数据库. 唐彬: 今日完成:请假.(编译+计组,压力有点大) 明日任务:阅读ios客户端代码. 史烨轩: 今日完成:请假 ...