【bzoj2186】[Sdoi2008]沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑
Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 3303 Solved: 1129
[Submit][Status][Discuss]
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
4 2
Sample Output
phi (m!) = m! * (p-1)/p p是m!的质因数
整理得 求 n! * (p-1)/p p是m!的质因数,即
预处理1-10000000的素数以及1-10000000的逆元。。。
都可以线性筛。。事实上只要把素数的逆元用exgcd求一求就好,其余并未用到
阶乘取模也预处理一下
| RunID | User | Problem | Result | Memory | Time | Language | Code_Length | Submit_Time |
| 1690284 | songyiqun | 2186 | Accepted | 130196 kb | 6424 ms | C++/Edit | 1369 B | 2016-11-04 11:02:50 |
| 1690280 | songyiqun | 2186 | Time_Limit_Exceed | 130196 kb | 11788 ms | C++/Edit | 1362 B | 2016-11-04 10:57:08 |
| 1690274 | songyiqun | 2186 | Time_Limit_Exceed | 130196 kb | 11780 ms | C++/Edit | 1364 B | 2016-11-04 10:54:02 |
| 1690271 | songyiqun | 2186 | Time_Limit_Exceed | 130200 kb | 11776 ms | C++/Edit | 1380 B | 2016-11-04 10:52:34 |
| 1690264 | songyiqun | 2186 | Time_Limit_Exceed | 249340 kb | 11096 ms | C++/Edit | 1439 B | 2016-11-04 10:48:43 |
| 1690253 | songyiqun | 2186 | Time_Limit_Exceed | 249340 kb | 11576 ms | C++/Edit | 1386 B | 2016-11-04 10:37:04 |
| 1690246 | songyiqun | 2186 | Time_Limit_Exceed | 249340 kb | 11576 ms | C++/Edit | 1386 B | 2016-11-04 10:35:04 |
| 1690241 | songyiqun | 2186 | Time_Limit_Exceed | 249340 kb | 11624 ms | C++/Edit | 1361 B | 2016-11-04 10:26:29 |
| 1690240 | songyiqun | 2186 | Memory_Limit_Exceed | 391772 kb | 0 ms | C++/Edit | 1350 B | 2016-11-04 10:25:49 |
| 1690237 | songyiqun | 2186 | Memory_Limit_Exceed | 391772 kb | 0 ms | C++/Edit | 1350 B | 2016-11-04 10:23:07 |
/*************
bzoj 2186
by chty
2016.11.4
*************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 10000000
int n,m,T,mod,cnt,prime[],ans[MAXN+],fac[MAXN+],ni[MAXN+];
bool check[MAXN+];
inline int read()
{
int x=; char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
void exgcd(int a,int b,int &x,int &y)
{
if(!b) {x=; y=; return;}
exgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
}
int find(int p)
{
int x,y;
exgcd(p,mod,x,y);
x=(x%mod+mod)%mod;
return x;
}
void pre()
{
fac[]=; ni[]=;
for(int i=;i<=MAXN;i++) fac[i]=(long long)fac[i-]*i%mod;
for(int i=;i<=MAXN;i++)
{
if(!check[i]) prime[++cnt]=i,ni[i]=find(i);
for(int j=;j<=cnt&&prime[j]*i<=MAXN;j++)
{
check[prime[j]*i]=;
if(i%prime[j]==) break;
}
}
ans[]=;
for(int i=;i<=MAXN;i++)
{
ans[i]=ans[i-];
if(!check[i]) ans[i]=(long long)ans[i]*(i-)%mod*ni[i]%mod;
}
}
int main()
{
T=read(); mod=read();
pre();
while(T--)
{
n=read(); m=read();
printf("%d\n",(long long)fac[n]*ans[m]%mod);
}
return ;
}
【bzoj2186】[Sdoi2008]沙拉公主的困惑的更多相关文章
- BZOJ2186: [Sdoi2008]沙拉公主的困惑(求[1,N!]与M!互素的个数)(线性筛)
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 6103 Solved: 2060[Submit][S ...
- BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 5003 Solved: 1725 [Submit] ...
- [bzoj2186][Sdoi2008]沙拉公主的困惑_数论
沙拉公主的困惑 bzoj-2186 Sdoi-2008 题目大意:求N!中与M!互质的数的个数. 注释:$1\le N,M\le 10^7$. 想法:显然是求$\phi(M!)$.这东西其实只需要将数 ...
- BZOJ2186: [Sdoi2008]沙拉公主的困惑
传送门 常规数论题,利用欧拉函数的相关性质. 题求$[1,N!]$中与$M!$互质的数的个数,且$M \leq N$.然后根据欧拉函数的相关性质很容易得出这道题的答案为$\frac{\phi (M!) ...
- BZOJ2186 SDOI2008沙拉公主的困惑(数论)
由于n!是m!的倍数,而对于每个与m!互质且小于m!的数x,x+m!.x+2*m!……也与其互质,所以答案即为(n!/m!)*φ(m!). φ(m!)=m!*∏(1-1/pi).其中的pi即为1~m中 ...
- [bzoj2186][Sdoi2008]沙拉公主的困惑——数论
题目大意 求 \[\sum_{i = 1}^{N!} [gcd(i, M!) = 1]\] 题解 显然,题目就是求 \[N!(1-\frac{1}{p_1})(1-\frac{1}{p_2})...\ ...
- 【数论】【欧拉函数】【筛法求素数】【乘法逆元】【快速幂取模】bzoj2186 [Sdoi2008]沙拉公主的困惑
http://www.cnblogs.com/BLADEVIL/p/3490321.html http://www.cnblogs.com/zyfzyf/p/3997986.html 翻了翻题解,这两 ...
- 【BZOJ2186】[Sdoi2008]沙拉公主的困惑 线性筛素数
[BZOJ2186][Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M! ...
- 【bzoj2186】: [Sdoi2008]沙拉公主的困惑 数论-欧拉函数
[bzoj2186]: [Sdoi2008]沙拉公主的困惑 考虑当 gcd(a,b)=1 则 gcd(nb+a,b)=1 所以[1,N!]与M!互质的个数就是 筛出[1,M]所有的素数p[i] 以及逆 ...
随机推荐
- Unity的Update() 和 FixedUpdate()的区别
Update() 和 FixedUpdate()在游戏中都会在更新的时候自动循环调用. 但是Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体 ...
- Linux下windows中文文本文件乱码问题
table of content: 乱码问题 用gedit选择正确的字符编码打开文件 文件转码 总结 §乱码 Fedora安装时默认用UTF-8字符编码方式, 这么做有国际化的好处(和很多用utf-8 ...
- Scrapy框架及组件描述
Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...
- bzoj 2770 YY的Treap
Written with StackEdit. Description 志向远大的\(YY\)小朋友在学完快速排序之后决定学习平衡树,左思右想再加上\(SY\)的教唆,\(YY\)决定学习\(Trea ...
- kali视频(1-5)
第二周 kali视频(1-5) 1.kali安装 2.基本配置 vmtools安装过程. 3.安全渗透测试一般流程 4.信息搜集之GoogleHack 5.信息搜集之目标获取 1.kali安装 直接在 ...
- RabbitMQ学习系列一安装RabbitMQ服务
RabbitMQ学习系列一:windows下安装RabbitMQ服务 http://www.80iter.com/blog/1437026462550244 Rabbit MQ 是建立在强大的Erla ...
- 【java规则引擎】规则引擎RuleBase中利用观察者模式
(1)当RuleBase中有规则添加或删除,利用观察者模式实现,一旦有变动,规则引擎其他组件也做出相应的改变.(2)学习思想:当一个应用中涉及多个组件,为了实现易扩展,解耦思想.可以利用观察者模式实现 ...
- 因实现本地浏览器访问nginx修改配置文件后,安装vsftpd失败
解决方法如下(修改dns配置) vi /etc/resolv.conf 在此文件最后加入:nameserver 8.8.8.8 如果没有vi编辑器可用: echo "nameserver 8 ...
- JAVA单例模式:懒汉式,饿汉式
今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子.代码如下: 1.懒汉式单例 package com.lf.shejimoshi; /** * @classDesc: 类描述:(懒汉式单 ...
- AES前后加密算法代码
首先下载aes.js加密工具类: 本文采用的是 AES/ECB/PKCS5Padding的加密方式进行加密的: js加密写法如下: <!DOCTYPE html> <html lan ...