HDU-6608 Fansblog(威尔逊定理+素数间隔+逆元)
即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大。
(Q!)*(Q+1)*(Q+2)*...*(P-1)=(p-1)!
得到Q!(mod P)=(((P-1)!)/(Q+1)*(Q=2)*(Q+3)*...*(P-1))(mod P)
Q!(mod P)=((P-1)/(Q+1)*(Q=2)*(Q+3)*...*(P-1))(mod P)
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 using namespace std;
6 typedef long long ll;
7 const int maxn=1e7+10;
8 ll mod;
9 int prime[maxn+10],cnt;
10 int vis[maxn+10];
11 void get_prime()
12 {
13 cnt=0;
14 for(int i=2;i<=maxn;++i)
15 {
16 if(!vis[i])
17 prime[cnt++]=i;
18 for(int j=0;j<cnt&&(ll)i*prime[j]<=maxn;j++)
19 {
20 vis[i*prime[j]]=1;
21 if(i%prime[j]==0) break;
22 }
23 }
24 }
25 bool is_prime(ll x)
26 {
27 for(int i=0;i<cnt&&(ll)prime[i]*prime[i]<=x;++i)
28 {
29 if(x%prime[i]==0)
30 return 0;
31 }
32 return 1;
33 }
34 ll mul(ll a,ll b)
35 {
36 ll res=0;
37 while(b)
38 {
39 if(b&1) res=(res+a)%mod;
40 a=(a+a)%mod;
41 b>>=1;
42 }
43 return res%mod;
44 }
45 ll poww(ll a,ll b)
46 {
47 ll res=1;
48 while(b)
49 {
50 if(b&1)
51 res=mul(res,a);
52 a=mul(a,a);
53 b>>=1;
54 }
55 return res;
56 }
57 int main()
58 {
59 int t;
60 ll p,q;
61 get_prime();
62 scanf("%d",&t);
63 while(t--)
64 {
65 scanf("%lld",&p);
66 mod=p;
67 q=p-1;
68 while(!is_prime(q)) q--;
69 ll ans=p-1;
70 for(ll i=q+1;i<=p-1;++i)
71 {
72 ans=mul(ans,poww(i,mod-2));
73 }
74 printf("%lld\n",ans);
75 }
76 return 0;
77 }

HDU-6608 Fansblog(威尔逊定理+素数间隔+逆元)的更多相关文章
- 2019HDU多校第三场F Fansblog——威尔逊定理&&素数密度
题意 给定一个整数 $P$($10^9 \leq p\leq 1^{14}$),设其前一个质数为 $Q$,求 $Q! \ \% P$. 分析 暴力...说不定好的板子能过. 根据威尔逊定理,如果 $ ...
- 2019杭电多校第三场hdu6608 Fansblog(威尔逊定理)
Fansblog 题目传送门 解题思路 Q! % P = (P-1)!/(P-1)...(Q-1) % P. 因为P是质数,根据威尔逊定理,(P-1)!%P=P-1.所以答案就是(P-1)((P-1) ...
- hdu 2973"YAPTCHA"(威尔逊定理)
传送门 题意: 给出自然数 n,计算出 Sn 的值,其中 [ x ]表示不大于 x 的最大整数. 题解: 根据威尔逊定理,如果 p 为素数,那么 (p-1)! ≡ -1(mod p),即 (p-1)! ...
- hdu 2582(数论相关定理+素数筛选+整数分解)
f(n) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 6608:Fansblog(威尔逊定理)
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- HDU6608-Fansblog(Miller_Rabbin素数判定,威尔逊定理应用,乘法逆元)
Problem Description Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people ...
- HDU 5391 Zball in Tina Town【威尔逊定理】
<题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...
- HDU - 2973:YAPTCHA (威尔逊定理)
The math department has been having problems lately. Due to immense amount of unsolicited automated ...
- HDU 2973 YAPTCHA (威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
随机推荐
- selenium自动化 | 通过获取cookies登录
>>>登录百度<<<#获取登录成功后的cookies def get_cookies(): driver.get(bd_url) driver.implicitly ...
- Go中由WaitGroup引发对内存对齐思考
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码时14.4 WaitGroup使用大家都会,但是其中是怎么实现的我们 ...
- 【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)
第3章 使用MySQL 文章目录 第3章 使用MySQL 连接 选择数据库 了解数据库和表 小结 简单记录 - MySQL必知必会 - [英]Ben Forta 将学习如何连接和登录到MySQL,如何 ...
- 使用msys2在window下构建和使用Linux的软件
目录 前言 安装 使用 总结 前言 在window下构建Linux编译环境是很常见的,以前用过mingw弄过差不多的环境. 但是使用msys2后就根本停不下来咯,太好用咯. 安装 去官网下载吧,安装跟 ...
- 【Linux】rsh进程缓慢问题处理
环境CentOS 6.5 由于项目上线时间很长,服务器持续很久没有关机重启过,随后发现rsh反应特别慢 rsh登陆服务器的反应最慢时候3分钟才可以建立链接,登陆之后查看服务器负载是否正常,查看cpu, ...
- kubernets之namespace
一 命名空间的介绍以及作用 1 概念 为了方便不同部门之间对kubernets集群的使用,并且对其进行有效的隔离,kubernets提供了一种资源隔离手段,通过将各种不同资源分组到 一个区域,并且统 ...
- CTFHub - Web(一)
请求方法: 1.进入页面,提示:HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源. 2.当前http的请求方式是get请求,当你使用CTFHUB为请求 ...
- 深入解析vue响应式原理
摘要:本文主要通过结合vue官方文档及源码,对vue响应式原理进行深入分析. 1.定义 作为vue最独特的特性,响应式可以说是vue的灵魂了,表面上看就是数据发生变化后,对应的界面会重新渲染,那么响应 ...
- Linux下nginx的安装以及环境配置
参考链接 https://blog.csdn.net/qq_42815754/article/details/82980326 环境: centos7 .nginx-1.9.14 1.下载 并解压 ...
- 1.2V升3.3V芯片,大电流,应用MCU供电,3.3V稳压源
MCU供电一般是2.5V-5V之间等等都有,1.2V需要升到3.3V的升压芯片来稳压输出3.3V给MCU供电. 同时1.2V的输入电压低,说明供电端的能量也是属于低能量的,对于芯片自身供货是也要求高. ...