传送门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】沙拉公主的困惑,数论练习之逆元与φ相关推荐

  1. [bzoj2186]沙拉公主的困惑

    2186 沙拉公主的困惑 Time Limit: 10 Sec   Memory Limit: 259 MB Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有 ...

  2. bzoj2186【SDOI2008】沙拉公主的困惑

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

  3. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...

  4. φ(1)=1 [Sdoi2008]沙拉公主的困惑

    问题 F: [Sdoi2008]沙拉公主的困惑 时间限制: 1 Sec 内存限制: 259 MB 题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘 ...

  5. 沙拉公主的困惑 cash

    一.沙拉公主的困惑 (cash.pas/c/cpp, 限时3 秒,内存256M) [题目描述] 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编 号范围为1 到N 的阶乘,但是 ...

  6. 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数

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

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

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

  8. bzoj 2186: [Sdoi2008]沙拉公主的困惑

    Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2463  Solved: 820 [Submit][Status][Discuss] Descrip ...

  9. [欧拉函数] Bzoj P2186 沙拉公主的困惑

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

最新文章

  1. 玩转Android之在线视频播放控件Vitamio的使用
  2. 使用Postman 传递arraylist数据给springboot
  3. freemarker模板最小案例实现
  4. ubuntu12.04
  5. 卷积神经网络(CNN:Convolutional Neural Network)
  6. 温度表达转化(信息学奥赛一本通-T1013)
  7. 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
  8. golang 面向接口编程
  9. php一点通,编程一点通
  10. 在.NET2.0中上传文件操作(解决了上传文件大小和多文件限制)--转
  11. Rife算法的Matlab实现
  12. 21天学通C语言-学习笔记(6)
  13. oracle dmp 编码问题,Oracle imp导入dmp文件时 IMP-00038:无法转换为环境字符集句柄
  14. 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
  15. Linux - last 命令
  16. linux+聊天工具支持qq,linux 下怎样使用qq等聊天工具聊天
  17. 大数据是普惠金融的未来!
  18. linux之lsv—NAT配置
  19. adf被打开_HP Laserjet M1522nf 出现ADF门打开 是什么意思
  20. 精通正则表达式的 12 个有用资源

热门文章

  1. 红橙Darren视频笔记 启动不在清单文件注册的activity 安卓8有效
  2. Android 8.0 EditText 焦点无法移动到其他控件
  3. 利用MSFM算法计算程函方程的走时CT胖射线反演法
  4. 2048游戏c语言实验报告,2048游戏语言实验报告.doc
  5. Java 对象的序列化
  6. 代数学笔记5: 群论(一)
  7. 【Paper-Attack】Poisoning Attacks to Graph-Based Recommender Systems
  8. 查看在Ubuntu上打印的大型JSON文件
  9. python3 super_python3的super详解
  10. 设置DefaultHttpClient和HttpClient的超时时间的方法