【HDU6608 Fansblog】求很大很大的数的阶乘
Fansblog
Description
Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people visited this blog.One day, he find the visits has reached P , which is a prime number.He thinks it is a interesting fact.And he remembers that the visits had reached another prime number.He try to find out the largest prime number Q ( Q < P ) ,and get the answer of Q! Module P.But he is too busy to find out the answer. So he ask you for help. ( Q! is the product of all positive integers less than or equal to n: n! = n * (n-1) * (n-2) * (n-3) *… * 3 * 2 * 1 . For example, 4! = 4 * 3 * 2 * 1 = 24 )
Standard Input
First line contains an number T(1<=T<=10) indicating the number of testcases. Then T line follows,each contains a positive prime number P (1e9≤p≤1e14)
Standard Output
For each case output a line with one integer, means the factorial of Q modulo P for one line.
Sample Input
1 1000000007
Sample Output
328400734
emmm。。。。。。。。。。。。
首先,Q!Q!Q! 是肯定不能从1乘过去的,也没有方法可以正着算过去。。。
于是聪明的zzy小公举就想,可不可以倒着推呢。
我们知道,P!modP=0P! mod P=0P!modP=0,好像可以从这里入手耶。对于P取模的话,其实也只需要在P!P!P!这里乘好多逆元~
但是P!modP=0P! mod P=0P!modP=0。。。怎么乘也不行啊。。。
于是小公举就入手了数论四大玄学定理中的威尔逊定理!(但他比赛的时候并没有入手,居然自己瞎推推出来了神奇的Q!=p−(Q+1)−1(Q+2)−1...(p−2)−1(p−1)−1Q!=p-(Q+1)^{-1}(Q+2)^{-1}...(p-2)^{-1}(p-1)^{-1}Q!=p−(Q+1)−1(Q+2)−1...(p−2)−1(p−1)−1)
由此可见,瞎推还是很重要的,嗯。
那么传说中的威尔逊定理呢?
他告诉我们:
(p−1)!≡−1(modp)( p -1 )! ≡ -1 ( mod p )(p−1)!≡−1(modp)
于是我们就可以这么写,,然后这么算出来。。
Q![(Q+1)(Q+2)...(p−1)]=p−1(modp)Q![(Q+1)(Q+2)...(p-1)]=p-1(mod p)Q![(Q+1)(Q+2)...(p−1)]=p−1(modp)
Q!(Q+1)(Q+2)...(p−2)=(p−1)∗(p−1)−1=1Q!(Q+1)(Q+2)...(p-2)=(p-1)*(p-1)^{-1}=1Q!(Q+1)(Q+2)...(p−2)=(p−1)∗(p−1)−1=1
Q!=1∗(Q+1)−1(Q+2)−1...(p−2)−1Q!=1*(Q+1)^{-1}(Q+2)^{-1}...(p-2)^{-1}Q!=1∗(Q+1)−1(Q+2)−1...(p−2)−1
由于P和Q不会离很远,于是直接这么乘,用大数乘法就好了~
【HDU6608 Fansblog】求很大很大的数的阶乘相关推荐
- 大四阶段的社会实践的主要目的是_疫情当前,大三大四的学生“很惨”?大一大二的学生也别松懈...
大四毕业生不容易 这次疫情对于高校学生而言,可以说是各有各的难处,"这届毕业生很惨"更是屡上热搜.不可否认,大四毕业生确实很不容易,论文答辩.毕业.求职就业等都受到了影响,虽然有困 ...
- 计算机大三大四学什么,为什么大学期间很少看到大三大四的同学,他们都在做什么?...
原标题:为什么大学期间很少看到大三大四的同学,他们都在做什么? 网友一: 有的忙于实践学习. 在大学期间,除了课堂学习之外,每一个专业都会安排有诸多实习环节,有认知实习.专业实习.社会实践以及各类操作 ...
- Elasticsearch7.X中的字段类型keyword插入很长的大段内容后,报字符超出异常
一.问题描述 本文操作的ES版本是Elasticsearch7.13 设置为keyword类型的字段,插入很长的大段内容后,报字符超出异常,无法插入. post 361323个字符的文档,报错如下: ...
- 很大、大得离谱的数。。。
很大.大得离谱的数... 先来定义超运算:a[n]b,n为正整数 其中,a称为底数,b为超指数,n为阶数. 递归定义为: a[1]b = a + b;//规定超1阶运算,相当于a+b个1 a[n]b ...
- MATLAB教程_11方程式求根_台大郭彦甫课程笔记
MATLAB教程_11方程式求根_台大郭彦甫课程笔记 一.符号寻根法(解析法) 1.使用sym()或syms()创建符号变量 2.符号根查找:solve() 3.解多重方程 4.求解用符号表示的方程 ...
- FPGA求最大值和次大值
转载:https://www.cnblogs.com/sea-wind/p/8384596.html 0. 题目 在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出 ...
- O(n)复杂度求区间第K大
O(n)复杂度求区间第K大 描述 给你一个数组,O(N)复杂度找出其中第K大的数. 输入 第一行包括两个数,N,K,分别代表数组大小,以及你应该找出第K大的数. 接下来N行,每行包括一个数. 输出 ...
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...
- 可持久化Trie+堆优化 OR Trie树上求XOR第K大 ---- P5283 [十二省联考2019]异或粽子
题目大意 题目大意: 考虑先做个 prefix xor 前缀异或bi=⨁j=1iaj(1≤i≤n)b_i=\bigoplus_{j=1}^{i}a_j(1\leq i \leq n)bi=j=1⨁i ...
- C++实现求数组中前K大的数
参考:http://blog.csdn.net/xiaoding133/article/details/8037086 C++实现求数组中前K大的数,即求数组的最大的k个数 //数组中求最大的k个数 ...
最新文章
- JS原型与原型链终极详解
- HashMap实现相同key,对value的操作
- .Net Discovery系列之十二-深入理解平台机制与性能影响(下)
- 使用Socket及ServerSocket创建简单的服务器
- 使用Apache Flume抓取数据(1)
- SAP CRM Fiori应用里的note section
- python-字符串与字节-0222
- WORD给文档设置密码保护?
- 控制系统计算机仿真源码,控制系统计算机仿真-实验五.doc
- 北京44岁程序员失业,感叹:编程估计没戏了,想去卖煎饼果子点背锅走人~
- decltype关键字
- 新代系统PLC编程软件 新代PLC编程软件中文版梯形图
- 我有一百种方法让你的Excel连上数据库
- 小菜编程成长记(十一 无熟人难办事?——聊设计模式迪米特法则)
- matlab 摄动波浪理论,等于波浪论文,关于MATLAB在实验室波高采集中的应用相关参考文献资料-免费论文范文...
- ArcGIS Server Image 扩展模块
- C语言及数据结构课程设计:超市信息管理系统
- 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用
- OpenCV python去除图片水印
- 图像去噪,深度学习去噪,普通方法