问题:可能逆元不存在吗?

题解:

Gcd(a,b)==Gcd(b,a-b);

从数据范围可以看出应该求M!的欧拉函数;

然后通过Gcd转化过去

一开始没想到

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. typedef long long Lint;
  6. const int maxT=20000;
  7. const int maxn=10000009;
  8. int T,r;
  9. int mn=0,mm=0;
  10.  
  11. int inn[maxT];
  12. int inm[maxT];
  13. Lint fac[maxn];
  14.  
  15. int vis[maxn]= {0};
  16. int prime[maxn],cntprime=0;
  17. int Lineshake() {
  18. vis[1]=1;
  19. for(int i=2; i<=mm; ++i) {
  20. if(!vis[i]) {
  21. prime[++cntprime]=i;
  22. }
  23. for(int j=1; (j<=cntprime)&&(i*prime[j]<=mm); ++j) {
  24. vis[i*prime[j]]=1;
  25. if(i%prime[j]==0)break;
  26. }
  27. }
  28. }
  29.  
  30. Lint ksm(Lint a,Lint p) {
  31. Lint ret=1;
  32. for(; p; p>>=1,a=a*a%r) {
  33. if(p&1)ret=ret*a%r;
  34. }
  35. return ret;
  36. }
  37. Lint inv(Lint x) {
  38. return ksm(x,r-2);
  39. }
  40.  
  41. Lint phi[maxn];
  42.  
  43. int main() {
  44. scanf("%d%d",&T,&r);
  45. for(int i=1; i<=T; ++i) {
  46. scanf("%d%d",&inn[i],&inm[i]);
  47. mn=max(mn,inn[i]);
  48. mm=max(mm,inm[i]);
  49. }
  50.  
  51. fac[1]=1;
  52. for(int i=2; i<=mn; ++i)fac[i]=fac[i-1]*i%r;
  53. Lineshake();
  54.  
  55. phi[1]=1;
  56. for(int i=2; i<=mm; ++i) {
  57. if(!vis[i]) {
  58. phi[i]=phi[i-1]*(i-1)%r*inv(i)%r;
  59. } else {
  60. phi[i]=phi[i-1];
  61. }
  62. }
  63.  
  64. for(int i=1; i<=T; ++i) {
  65. printf("%lld\n",fac[inn[i]]*phi[inm[i]]%r);
  66. }
  67. return 0;
  68. }

  

BZOJ:2186: [Sdoi2008]沙拉公主的困惑的更多相关文章

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

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

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

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

  3. [BZOJ 2186] [Sdoi2008] 沙拉公主的困惑 【欧拉函数】

    题目链接:BZOJ - 2186 题目分析 题目要求出 [1, n!] 中有多少数与 m! 互质.(m <= n) 那么在 [1, m!] 中有 phi(m!) 个数与 m! 互质,如果一个数 ...

  4. [BZOJ 2186][Sdoi2008]沙拉公主的困惑(欧拉函数)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2186 分析: 就是要求1~n!中与m!互质的数的个数 首先m!以内的就是φ(m!) 关 ...

  5. bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2186 [题意] 若干个询问,求1..n!中与m!互质的个数. [思路] 首先有gcd( ...

  6. BZOJ 2186 [Sdoi2008]沙拉公主的困惑 【逆元】

    题意:求中互质的数的个数,其中. 分析:因为,所以,我们很容易知道如下结论    对于两个正整数和,如果是的倍数,那么中与互素的数的个数为      本结论是很好证明的,因为中与互素的个数为,又知道, ...

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

    #include<cstdio> #include<iostream> #define ll long long #define N 10000009 using namesp ...

  8. BZOJ 2186 SDOI2008 沙拉公主的困惑 数论

    题目大意:给定询问组数T和取模数P,每次询问给定两个整数n和m,求1~(n!)的数中与m!互质的数个个数模P (m<=n) 首先T<=1W,暴力肯定过不去,我们须要预处理一些东西 首先我们 ...

  9. bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数

    n>=m,所以就变成了求 ϕ(m!)∗n!/m! 而 ϕ(m!)=m!∗(p−1)/p...... p为m!的素因子,即为m内的所有素数,问题就转化为了求 n!∗(p−1)/p...... 只需 ...

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

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

随机推荐

  1. SpringMVC 转发、重定向

    转发.重定向到其它业务方法 @org.springframework.stereotype.Controller @RequestMapping("/userController" ...

  2. Link Analysis_1_Basic Elements

    1. Edge Attributes 1.1 Methods of category 1.1.1 Basic three categories in terms of number of layers ...

  3. C 常用库函数memset,编译器宏定义assert

    一. 总览 1.1库函数 函数名 头文件 功能 原型 说明 syslog syslog.h 记录至系统记录(日志) void    syslog(int, const char *, ...) __p ...

  4. Docker 镜像文件的导入和导出

    使用save命令 保存镜像 docker save -o name_by_you.tar exist_images 将文件copy到另一台机器 使用load命令将镜像文件保存到本地仓库 docker ...

  5. 用sql删除数据库重复的数据的方法

      /***********************************************两个意义上的重复记录:1.是完全重复的记录,也即所有字段均重复的记录,2.是部分关键字段重复的记录, ...

  6. 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead

    import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...

  7. extjs开发———用extJS简单写一个饼状图

    先上效果图: js编写部分简单如下,先插入一个模块,然后给模块中添加内容. var myChart1 = echarts.init(document.getElementById('myChart1' ...

  8. setTimeout的异步

    http://www.cnblogs.com/littledu/articles/2607211.html http://www.cnblogs.com/rubylouvre/archive/2009 ...

  9. pyhton scipy最小二乘法(scipy.linalg.lstsq模块)

    最小二乘法则是一种统计学习优化技术,它的目标是最小化误差平方之和来作为目标J(θ)J(θ),从而找到最优模型. 7. SciPy最小二乘法 最小二乘法则是一种统计学习优化技术,它的目标是最小化误差平方 ...

  10. C#常用类库简介(二)

    原文出处:http://blog.csdn.net/weiwenhp/article/details/8140503 C#常用类库简介(一)的地址 System与mscorlib这两个dll中的类库是 ...