杭电2019多校第三场 HDU-6608 Fansblog(威尔逊定理+素数间隔+逆元)
威尔逊定理:在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大。
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6608
题意:T组样例。每组样例,给出一个素数P(1e9≤P≤1e14),Q是P的前一个素数求Q!%P。
思路:由威尔逊定理得:,即
。又因为
,得到
。
因为两个素数之间的间隔不会超过300,我们从P-1开始一个个查验找Q。再把(P-1)乘上[Q,P-1]的逆元即可。注意因为数很大,所有涉及乘的地方都要用快速乘。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e7+10;
ll mod;
int prime[N+10],cnt;
bool vis[N+10];
bool is_prime(ll x)
{for(int i=0;i<cnt&&(ll)prime[i]*prime[i]<=x;i++){if(x%prime[i]==0)return 0;}return 1;
}
void get_prime()
{for(int i=2;i<=N;i++){if(!vis[i])prime[cnt++]=i;for(int j=0;j<cnt&&(ll)i*prime[j]<=N;j++){vis[i*prime[j]]=1;if(i%prime[j]==0) break; } }
}
ll mul(ll a,ll b)
{ll res=0;while(b){if(b&1) res=(res+a)%mod;a=(a+a)%mod;b>>=1;}return res%mod;
}
ll poww(ll a,ll b)
{ll res=1;while(b){if(b&1) res=mul(res,a);a=mul(a,a);b>>=1;}return res;
}
int main(void)
{int t;get_prime(); ll p,q;scanf("%d",&t);while(t--){scanf("%lld",&p);mod=p;q=p-1;while(!is_prime(q)) q--;//cout<<pp<<endl;ll ans=p-1;for(ll i=q+1;i<=p-1;i++)ans=mul(ans,poww(i,mod-2));printf("%lld\n",ans);}return 0;
}
杭电2019多校第三场 HDU-6608 Fansblog(威尔逊定理+素数间隔+逆元)相关推荐
- 杭电2019多校第三场 HDU-6608 Fansblog
题目:Fansblog 题意大致描述:给定一个质数P(1e9≤P≤1e14),找到比P小的最大的质数Q,并求出Q!%P 需要了解的知识 威尔逊定理 在初等数论中,威尔逊定理给出了判定一个自然数是否为素 ...
- 杭电2019多校第三场 HDU-6608 Fansblog(威尔逊定理+大数判素数+逆元)
威尔逊定理:在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.即:当且仅当p为素数时:(p−1)!≡−1(modp)( p -1 )! ≡ -1 ( mod p )(p−1)!≡− ...
- HDU 2019 Multi-University Training Contest 1 杭电2019多校联合训练赛 第一场 1001 Blank (6578)
HDU 2019 Multi-University Training Contest 1 杭电2019暑期多校集训第一场 1001 Blank (6578) Problem Description T ...
- 2019多校第三场 HDU6608 Fansblog(威尔逊定理,逆元,质数间隔)
链接:HDU6608 Fansblog 题意: 给出一个质数PPP(109≤P≤101410^9\le P\le 10^{14}109≤P≤1014),找出最大的质数QQQ(Q<PQ \lt P ...
- 2019.7.29 杭电多校第三场小结
index > 杭电多校第三场 题号 标题 AC 做法 状态 6603 Azshara's deep sea (51/150)34.00% 6604 Blow up the city (213/ ...
- 2020杭电暑期多校02 10 - Lead of Wisdom (HDU6772) 常数坑
20200725005909 2020杭电暑期多校02 10 - Lead of Wisdom (HDU6772) 常数坑 如果一直 TLE,就看第三章. 一.题意 物品可能的种类有 kkk 种,编号 ...
- 24dian(牛客多校第三场)
24dian(牛客多校第三场) 题意: 给你n张牌,每张牌的大小为1 ~ 13,问这些牌与加减乘除任意组合(可以使用括号),且但所有的有效解在计算过程中都涉及到分数,即非整数,能否组成答案m,如果可以 ...
- 牛客多校第三场 B【Classical String Problem】
牛客多校第三场 B[Classical String Problem] 链接:https://ac.nowcoder.com/acm/contest/5668/B 来源:牛客网 题目描述 Given ...
- 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明
一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...
最新文章
- JVM自动内存管理:对象判定和回收算法
- 混合mixin函数_Less 混合
- 微博平台StatusNet研究(3):友好URL与OpenID支持
- 网络推广——网络推广专员面对网站收录异常要学会多角度分析
- java idea 模块_使用IntelliJ IDEA搭建多maven模块JAVA项目
- C/C++数组与指针
- html后台数据分类管理,细分数据.html
- FPGA硬件学习基础知识点总结(1)
- spring学习(33):id和name
- 三星Galaxy S11+电池谍照曝光:5000mAh超大容量 5G 不虚
- html页面改成thymeleaf,【Thymeleaf】Thymeleaf模板对html实时刷新
- python入门经典 财务-财务方面的学生如何学习python?
- FormBorderStyle 枚举
- Pycharm中更改镜像源
- 使用VC2005编译静态应用程序的方法
- python语言def_python中def的含义
- 仙童的ua741运算放大器内部电路
- Captcha Cracker (java)附带replace用法
- 「NFT 之王」无聊猿与品牌的跨界营销!
- 数字IC(SoC)低功耗设计方法总结
热门文章
- Unity游戏动画 从入门到住院 1
- 英语46级报名考试系统
- 手机做显示器服务器,华为MateView体验:手机做主机,显示器也能当电脑用
- 斜线表头html怎么做,Excel三栏斜线表头的完美制作方法
- 打造在线简历生成器,让面试官眼前一亮……
- Excel,world ,ppt文件图标显示异常解决办法 (2022最新)
- word中运行Mathtype报错问题解决方案(The MathType DLL cannot be found)
- 华为云迁移工具推荐最佳实践:Xen虚拟化迁移到华为云
- php开发俄罗斯方块,HTML5+JS实现俄罗斯方块原理及具体步骤_html5教程技巧
- 基于python的opencv相机标定(采用黑白棋盘格标定板)