【codevs2301】【BZOJ2186】沙拉公主的困惑,数论练习之逆元与φ
传送门1
传送门2
写在前面:数论!数论!数论!
思路:
1.分析出题目本意就是求phi(m!)*n!/m!%r(这一步大概挺难想的,想出来这个后面就简单多了)
2.n!%r可以O(10^7)预处理
3.由phi(x)=x×(p1-1)/p1×(p2-1)/p2×……×(pi-1)/pi,其中p1,p2,p3……pi为x的质因数且各不相同我们可以得到phi(m!)/m!=(p1-1)/p1×(p2-1)/p2×……×(pi-1)/pi,而且由于是阶乘,那么m!的质因数一定小于等于m,即小于10^7,所以同样可以预处理1-10^7中的质数并求出形同上式的答案,对于除法运算采取求逆元操作,即求出每个质因数关于r的逆元即可
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define LL long long
#define MAXN 10000000
using namespace std;
int t,r,n,m;
bool pd[10000001];
int phi[10000001],fac[10000001],prime[10000001];//这里的phi[i]并不是指i的φ,而是i!的φ
inline void exgcd(int a,int b,int &x,int &y)
{if (b==0) {x=1;y=0;return;}exgcd(b,a%b,x,y);int x1=y,y1=x-a/b*y;x=x1;y=y1;
}
inline int getinv(int p)
{int x,y;exgcd(p,r,x,y);return (x%r+r)%r;
}
main()
{scanf("%d%d",&t,&r);fac[0]=1;phi[1]=1;for (int i=1;i<=MAXN;i++)fac[i]=(LL)fac[i-1]*i%r;//加强制类型转换防止乘法爆int,下同for (int i=2;i<=MAXN;i++)if (!pd[i]){phi[i]=(LL)phi[i-1]*(i-1)%r*getinv(i)%r;for (int j=2;i*j<=MAXN;j++)pd[i*j]=1;//最朴素的筛法,可以用欧拉筛的说}else phi[i]=phi[i-1];while (t--){scanf("%d%d",&n,&m);printf("%lld\n",(LL)fac[n]*phi[m]%r);}
}
【codevs2301】【BZOJ2186】沙拉公主的困惑,数论练习之逆元与φ相关推荐
- [bzoj2186]沙拉公主的困惑
2186 沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有 ...
- bzoj2186【SDOI2008】沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2363 Solved: 779 [ Submi ...
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...
- φ(1)=1 [Sdoi2008]沙拉公主的困惑
问题 F: [Sdoi2008]沙拉公主的困惑 时间限制: 1 Sec 内存限制: 259 MB 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘 ...
- 沙拉公主的困惑 cash
一.沙拉公主的困惑 (cash.pas/c/cpp, 限时3 秒,内存256M) [题目描述] 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编 号范围为1 到N 的阶乘,但是 ...
- 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- [Sdoi2008]沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- bzoj 2186: [Sdoi2008]沙拉公主的困惑
Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2463 Solved: 820 [Submit][Status][Discuss] Descrip ...
- [欧拉函数] Bzoj P2186 沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
最新文章
- 玩转Android之在线视频播放控件Vitamio的使用
- 使用Postman 传递arraylist数据给springboot
- freemarker模板最小案例实现
- ubuntu12.04
- 卷积神经网络(CNN:Convolutional Neural Network)
- 温度表达转化(信息学奥赛一本通-T1013)
- 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
- golang 面向接口编程
- php一点通,编程一点通
- 在.NET2.0中上传文件操作(解决了上传文件大小和多文件限制)--转
- Rife算法的Matlab实现
- 21天学通C语言-学习笔记(6)
- oracle dmp 编码问题,Oracle imp导入dmp文件时 IMP-00038:无法转换为环境字符集句柄
- 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
- Linux - last 命令
- linux+聊天工具支持qq,linux 下怎样使用qq等聊天工具聊天
- 大数据是普惠金融的未来!
- linux之lsv—NAT配置
- adf被打开_HP Laserjet M1522nf 出现ADF门打开 是什么意思
- 精通正则表达式的 12 个有用资源
热门文章
- 红橙Darren视频笔记 启动不在清单文件注册的activity 安卓8有效
- Android 8.0 EditText 焦点无法移动到其他控件
- 利用MSFM算法计算程函方程的走时CT胖射线反演法
- 2048游戏c语言实验报告,2048游戏语言实验报告.doc
- Java 对象的序列化
- 代数学笔记5: 群论(一)
- 【Paper-Attack】Poisoning Attacks to Graph-Based Recommender Systems
- 查看在Ubuntu上打印的大型JSON文件
- python3 super_python3的super详解
- 设置DefaultHttpClient和HttpClient的超时时间的方法