Fansblog

点击题目查看题面 点击这里也可以

Source
2019 Multi-University Training Contest 3


给你一个素数PPP
让给你求最接近P的素数QQQ
输出 Q!%PQ!\%PQ!%P

根据威尔逊定理我们可以知道
当且仅当PPP是素数时
(P−1)!%P=−1(P-1)!\%P=-1(P−1)!%P=−1

(P−1)!%P=P−1(P-1)!\%P=P-1(P−1)!%P=P−1

自己打个表也能发现这个规律

我们知道了(P−1)!%P=P−1(P-1)!\%P=P-1(P−1)!%P=P−1
那么(Q−1)!%P=(P−1)∗inv(P−1)∗inv(P−2)...∗inv(Q+1)∗inv(Q)(Q-1)!\%P=(P-1)*inv(P-1)*inv(P-2)...*inv(Q+1)*inv(Q)(Q−1)!%P=(P−1)∗inv(P−1)∗inv(P−2)...∗inv(Q+1)∗inv(Q)
所以我们就可以在很快的时间里得到结果

/*--------- Hongjie ----------*/
// #include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<bitset>
#include<set>
#include<vector>
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define RE register
#define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
using namespace std;
const int cnt=3,tab[5]={2,3,7,61};
ll T,Q,P;
ll n,m;
ll Mul(ll x,ll y,ll mod){ll ans=(x*y-(ll)((long double)x/mod*y+0.5)*mod);return ans<0?ans+mod:ans;
}
ll Exp(ll x,ll y,ll mod){ll ans=1;while(y){if(y&1) ans=Mul(ans,x,mod);y>>=1;x=Mul(x,x,mod);}return ans;
}
bool Miller_Rabin(ll n){if(n==2||n==3||n==5||n==7||n==11||n==61) return 1;if(n==1||n%2==0||n%3==0||n%5==0||n%7==0||n%11==0||n%61==0) return 0;For(i,0,cnt) {RE ll d=n-1;while(!(d&1)) d>>=1;RE ll s=Exp(tab[i],d,n);while(s!=1&&s!=n-1&&d!=n-1) d<<=1,s=Mul(s,s,n);if(s!=n-1&&!(d&1)) return 0;}return 1;
}ll inv(ll a,ll p) {return Exp(a,p-2,p);
}int main(){// freopen("../in.txt","r",stdin);// freopen("../out.txt","w",stdout);scanf("%I64d",&T);while(T--) {scanf("%I64d",&P);for(ll q=P-1;;q--)if(Miller_Rabin(q)) {Q = q;break;}ll ans = P-1;for(ll i = Q+1;i<P;++i)ans = Mul(ans, inv(i,P), P);// ans = ans*inv(i,P)%P;// cout<<ans<<endl;printf("%I64d\n",ans%P);}return 0;
}

HDU 6608 Fansblog——————大素数检测相关推荐

  1. hdu 6608 Fansblog 威尔逊定理+大数阶乘取模

    传送门 题意:给出一个质数P,找出小于P的最大的质数N,求出N的阶乘模P.(P∈[1e10,1e14]) 思路:威尔逊定理:一个数n若是质数, 则有 (n−1) ! ≡ n−1mod n. 于是可以先 ...

  2. HDU 6608 Fansblog(随机素数测试+思维)

    传送门 不得不说这种倒着除回去的想法真的是太绝了. 至于大数的素性测试,也是板子,没什么好说的. #include<bits/stdc++.h> #define int long long ...

  3. HDU 6608 FansBlog(粉丝博客)(MillerRabin算法+威尔逊算法)

    Farmer John keeps a website called 'FansBlog' .Everyday , there are many people visited this blog.On ...

  4. HDU 6608 [2019 Multi-University Training Contest 3]

    Fansblog Problem Description Farmer John keeps a website called 'FansBlog' .Everyday , there are man ...

  5. HDU 6608:Fansblog(威尔逊定理)

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  6. 实验三:实现一个大素数生成算法

    一.实验内容 掌进一步掌握大素数分解的一般原理和实现方法.能用间接方法实现大素数分解.用代码实现Solovay-Strassen素性测试法或Miller-Rabin素性测试法. 二.分实现一个大素数生 ...

  7. C++实现伪大素数生成算法(费马小定理判别法、米勒拉宾素数判定法)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.伪大素数生成原理 方法一 方法二 数学基础 二.费马小定理判别法 1.算法 2.代码实现 3.运行结果 二.米勒拉宾素数 ...

  8. HDUOJ 6608 Fansblog

    HDUOJ 6608 Fansblog 题目链接 Problem Description Farmer John keeps a website called 'FansBlog' .Everyday ...

  9. 经典加密算法的实现与破解大素数生成算法

    0x00 信息系统安全实验报告 实验(一):经典加密算法的实现与破解 1. 实现凯撒加密.暴力破解凯撒加密 2. 选取k值,编译凯撒加密算法 3. 编写算法尝试暴力破解凯撒加密 实验(二):大素数生成 ...

最新文章

  1. Python Cookie HTTP获取cookie并处理
  2. linux uvc 支持的设备,摄像头是否支持uvc
  3. C# 加载 SQLite DLL问题
  4. php抓取运动步数,使用PHP抓取微博数据
  5. Win谷歌插件加载失效
  6. 在word中使用notepad++实现代码的语法高亮
  7. clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?
  8. 谷粒商城基础篇爬坑笔记--项目导入intellij IDEA后pom.xml无法识别为maven文件和程序包import com.atguigu.common.XXX不存在两个问题解决方法
  9. 递归查找所有子代id php,PHP递归函数:从父ID获取子ID
  10. oracle的成本核算,Oracle11gR2全表扫描成本计算(工作量模式-workload)
  11. kotlin中List,Map,数组的使用
  12. Java 求100以内的质数(素数)
  13. 线与逻辑与OC门、OD门关系
  14. cad文件如何转pdf图纸进行标准的打印
  15. 扫地机器人朋友圈文案_扫地机器人的简单文案
  16. 我在哪?要到哪里去?怎么去?
  17. 无线路由的四种加密方式
  18. Android开发指南中文版
  19. jupyter notebook 的 hinterland 插件 设置 代码提示但是默认不选中
  20. [Practical.Vim(2012.9)].Drew.Neil.Tip02 学习摘要

热门文章

  1. 【5G核心网】free5GC UPF源码分析
  2. 使用BadBoy录制JMeter脚本
  3. shell脚本——sql连接及其查询结果重定向到txt
  4. Geophysical research letters 进度2
  5. datadog ebpf模块 offset-guess.o 问题排查解决
  6. 在datadog中对某个主机上的进程进行监控
  7. 服务器中搭建OA系统,oa系统搭建在云服务器上
  8. GNU链接脚本(06) - SECTIONS指令
  9. ,片片鳞甲都烁烁生辉
  10. 电动车、船等 机械结构DIY