博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj2186 [Sdoi2008]沙拉公主的困惑
阅读量:6601 次
发布时间:2019-06-24

本文共 1496 字,大约阅读时间需要 4 分钟。

Time Limit: 10 Sec  Memory Limit: 259 MB
Submit: 4100  Solved: 1424

Description

  大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可。R是一个质数。

Input

第一行为两个整数T,R。R<=10^9+10,T<=10000,表示该组中测试数据数目,R为模后面T行,每行一对整数N,M,见题目描述 m<=n

Output

共T行,对于每一对N,M,输出1至N!中与M!素质的数的数量对R取模后的值

Sample Input

1 11
4 2

Sample Output

1
数据范围:
对于100%的数据,1 < = N , M < = 10000000

HINT

Source

 

数学问题 欧拉函数

与M!互质的钞票数,显然就是$ \phi(M!) $

直接按照公式计算,

$ \phi(M!) = M! * \Pi(1- \frac{1}{p_i}) = M!*\Pi ((p_i-1)/p_i)$ ($p_i$是M!的质因数)

当n>=m时,$N!$显然是$M!$的倍数,那么答案就是

$\frac{N!}{M!}*\phi(M!)$,

约分一下得到

$ N!* \Pi ((p_i-1)/p_i) $。

发现每次询问的模数是固定的,那么可以线性预处理出

$ \Pi ((p_i-1)/p_i) $

回答询问时乘个$ N! $即可。

↑除的部分要改成逆元

 

(这种做法在R<m的时候会出错,然而标解并没有考虑这种情况,数据也没有这种情况)

 

迷之困,写一半忘了自己要写什么,把phi什么的都筛出来了,把逆元求了阶乘,之后发现根本用不到

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define LL long long 7 using namespace std; 8 const int mxn=10000005; 9 int read(){10 int x=0,f=1;char ch=getchar();11 while(ch<'0' || ch>'9'){
if(ch=='-')f=-1;ch=getchar();}12 while(ch>='0' && ch<='9'){x=x*10-'0'+ch;ch=getchar();}13 return x*f;14 }15 int pri[mxn],cnt=0;16 int fac[mxn],inv[mxn];17 bool vis[mxn];18 int T,P;19 int ans[mxn];20 void init(){21 fac[0]=fac[1]=1;inv[0]=inv[1]=1;22 int i,j;23 for(i=2;i

 

转载于:https://www.cnblogs.com/SilverNebula/p/6909927.html

你可能感兴趣的文章
我的友情链接
查看>>
关于Docker Registry v2的搭建
查看>>
Linux上的进程管理
查看>>
Nginx与用户和服务器之间的传输模式
查看>>
8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
查看>>
MySQL之MySQL:prompt 设置 -登陆MySQL显示用户名和主机以及当前数据库
查看>>
Microsoft Lync2013客户端下载
查看>>
我的友情链接
查看>>
如何加密/混乱C源代码
查看>>
Flume Log4J Appender Flume收集Log4j日志
查看>>
linux下的防火墙iptables使用讲解
查看>>
Android中Service的理解与使用
查看>>
修改Eclipse中中文的字体大小
查看>>
linux系统下如何查看服务状态及启停用服务 && NTP的安装 && 安装Qpid 消息服务问题...
查看>>
您修改Active Directory域控制器IP地址方法是对的吗
查看>>
Linux常用命令笔记---操作系统引导与服务
查看>>
LGPL与闭源程序
查看>>
linux下配置mysql和mysql初始化
查看>>
jmeter测试mysql数据库
查看>>
微信小程序把玩(三十八)获取设备信息 API
查看>>