F
来源:互联网 发布:java字符串去掉双引号 编辑:程序博客网 时间:2024/05/15 05:29
F - N的阶乘 mod P
点击题目即可提交输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10
10 11
10
因为N!很大,不能直接求,必须得用同余定理
同余定理:
(m + n) % c = (m % c + n % c) % c
(m * n) % c = ((m % c) * (m % c)) % c
m^n % c = (m % c)^n % c
这题只需要在求阶乘的时候取模即可,下面是我的代码:
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;int main(){ long long n,p; scanf("%lld%lld",&n,&p); if(n==0) printf("%lld",1%p); else { long long i,sum=1; for(i=1;i<=n;i++) { sum=((sum%p)*(i%p))%p;//同余定理的基本公式:(a*b)%c==((a%c)*(b%c))%c; }printf("%lld",sum);}return 0;}
阅读全文
1 0
- f
- f
- f
- f
- f
- F#
- f
- F
- f
- f
- f
- f
- f
- f
- F
- f
- f
- F
- 解决货币精度问题(NSDecimalNumber)
- matlab 通用神经网络代码
- 事务处理
- 在Windows中使用VirtualBox安装Ubuntu
- 自定义主题样式,修改标题栏,状态栏;
- F
- serializeForm批处理form表单数据
- HDU-5978-思维+概率
- 整数划分 (dfs)
- JS实现下载xlsx格式文件--js-xlsx
- 蓝桥杯训练:递归——进制转化
- 【MyEclipse】设置tomcat虚拟内存,防止内存溢出
- 【算法+OpenCV】基于opencv的直线和曲线拟合与绘制(最小二乘法)
- java常见集合的循环输出方式