洛咕 P2155 [SDOI2008]沙拉公主的困惑


有个结论,就是如果\(gcd(a,b)=1\),那么\(gcd(a+kb,b)=1\)。证明比较显然。

所以这个题目要问的\(n!\)就可以分成\(\frac{n!}{m!}\)段,每一段和\(m!\)互质的数量都相同,那么显然就是\(\phi(m!)\)

所以答案是\(\frac{n!}{m!}\phi(m!)\)

然后怎么求呢,拆开

\(\frac{n!}{m!}\phi(m!)=\frac{n!}{m!}m!\Pi\frac{p-1}{p}=n\times \Pi\frac{p-1}{p}\)

就是\(m!\)有哪些质因数,显然就是1-m所有数质因数的并,也就是\(\Pi_{i\leq m \text{ and i is prime}}\frac{i-1}{i}\)。

这两个都可以直接预处理,就做完了。。

#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
int p[10000001],inv[10000001],pr[665000],d[10000001],dd[10000001];
int s[10000001];
bool yes[10000001];
int main(){
#ifndef ONLINE_JUDGE
freopen("1473.in","r",stdin);
freopen("1473.out","w",stdout);
#endif
ll T=gi(),R=gi(),n,m;
for(int i=2;i<=10000000;++i){
if(!yes[i])pr[++pr[0]]=i,d[i]=dd[i]=i;
for(int j=1;1ll*i*pr[j]<=10000000&&j<=pr[0];++j){
yes[i*pr[j]]=1;d[i*pr[j]]=pr[j];
if(i%pr[j]==0){
dd[i*pr[j]]=dd[i];
break;
}
dd[i*pr[j]]=dd[i]*pr[j];
}
}
p[0]=1;for(int i=1;i<=10000000;++i)p[i]=1ll*p[i-1]*i%R;
inv[1]=1;for(int i=2;i<R&&i<=10000000;++i)inv[i]=(R-1ll*(R/i)*inv[R%i]%R)%R;
for(int i=1;i<=pr[0];++i)s[pr[i]]=1ll*(pr[i]-1)*inv[pr[i]]%R;
s[1]=1;
for(int i=2;i<=10000000;++i)
if(s[i]==0)s[i]=s[i-1];
else s[i]=1ll*s[i]*s[i-1]%R;
while(T--){
n=gi(),m=gi();
if(n>R)puts("0");
else printf("%lld\n",1ll*p[n]*s[m]%R);
}
return 0;
}

洛咕 P2155 [SDOI2008]沙拉公主的困惑的更多相关文章

  1. 洛谷 P2155 [SDOI2008]沙拉公主的困惑 解题报告

    P2155 [SDOI2008]沙拉公主的困惑 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为\(1\)到\(N\)的阶乘,但是,政府只发行编号与\(M!\ ...

  2. [bzoj2186] [洛谷P2155] [Sdoi2008] 沙拉公主的困惑

    Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...

  3. P2155 [SDOI2008]沙拉公主的困惑

    \(\color{#0066ff}{ 题目描述 }\) 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大 ...

  4. Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2560  Solved: 857[Submit][St ...

  5. 数学(逆元):BZOJ 2186: [Sdoi2008]沙拉公主的困惑

    2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...

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

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

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

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

  8. 【BZOJ 2186】 2186: [Sdoi2008]沙拉公主的困惑 (欧拉筛,线性求逆元)

    2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...

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

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

随机推荐

  1. iOS设计模式 - 备忘录

    iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态 ...

  2. QtPropertyBrowser+vs2010的安装与配置

    之前编译过一次QtPropertyBrowser2.5,见文章http://www.cnblogs.com/aminxu/p/4516469.html,当时很激动,编译成功,lib也都编译通过,程序调 ...

  3. Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)

    hbase shell中执行java方法(高手必备),务必掌握! 1. 2. 3. 4. 更多命令,见scan help.在实际工作中,多用这个!!! API参考: http://hbase.apac ...

  4. php函数substr_replace中文乱码的替代解决方法

    $str = "中华人民共和国"; $len = mb_strlen($str,'utf-8'); if($len>=6){ $str1 = mb_substr($str,0 ...

  5. ZT 查找字符串中连续最长的数字串

    查找字符串中连续最长的数字串 有俩方法,1)比较好理解一些.2)晦涩 1) /* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给其中一个函数参数outputstr ...

  6. 用eval似乎会执行结果一次性返回,结果显示的是一行

    with open(r'商品资料','r',encoding='utf-8') as f1: lis_goods = eval(f1.read()) # 用eval似乎会执行结果一次性返回,结果显示的 ...

  7. MySQL复制(一)复制原理探讨

    1 复制概述 1.1.复制解决的问题 数据复制技术有以下一些特点: (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availabilit ...

  8. vue-cli项目打包优化(webpack3.0)

    1.修改source-map配置:此配置能大大减少打包后文件体积. a.首先修改 /config/index.js 文件: // /config/index.js dev环境:devtool: 'ev ...

  9. arcgis api for javascript本地部署加载地图

    最近开始学习arcgis api for javascript,发现一头雾水,决定记录下自己的学习过程. 一.下载arcgis api for js 4.2的library和jdk,具体安装包可以去官 ...

  10. 使用jenkins管理uirecorder录制的任务

    在uirecorder官网(http://uirecorder.com/)上,对jenkins的配置只有简单的几句话: How to dock Jenkins? Add commands source ...