费马小定理【模板例题】
费马小定理:
如果p是一个质数,而整数a不是p的倍数,
则有a(p-1)≡1(mod p)。
即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1
变式延伸:
在对质数 p 求余的条件下
n * ap-1 ≡ n * 1 = n
ap-2 ≡ a-1 * 1 = a-1
ab ≡ a b-p+1
(≡:等价)
费马小定理参考博客
例题
First:牛牛和牛可乐的赌约
题目原理
ans = mod + 1 - ( (1/n) % mod)m
变式可得
(1/n)%mod ==> nmod-1/ n ==> nmod-2
推荐快速幂博客
(由于 mod 与 m 都很大,再利用快速幂即可得到答案)
#include<stdio.h>
#define ll long long
const ll mod = 1e9+7;ll quick(ll base, ll power) //快速幂
{long long result=1;while(power){if(power&1)//只有奇数才乘以底数result=result*base%mod;base=base*base%mod;power=power>>1;}if(base==0){result=0;}return result%mod;
}int main(){int t;scanf("%d", &t);while(t--){ll n, m, ans;scanf("%lld%lld", &n, &m);ans = quick(n, mod-2)%mod;ans = quick(ans, m);ans = mod+1-ans;printf("%lld", ans);if(t!=0) printf("\n");}return 0;
}
Second:抽卡
解题思路
①、抽到牌概率 = 总概率 - 抽不到牌概率
②、费马小定理变形:(1/n)%mod = nmod-1
实现代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[100010]={0}, b[100010]={0};
const int mod = 1e9+7;ll quick(ll base, ll power){ll ans=1;while(power){if(power&1)ans = ans*base%mod;power >>= 1;base = base*base%mod;}if(base==0) return 0;return ans;
}int main(){int n;scanf("%d", &n);for(int i=0; i<n; i++) scanf("%d", &a[i]);for(int i=0; i<n; i++) scanf("%d", &b[i]);ll ans=1;for(int i=0; i<n; i++){ans = (ans*(a[i]-b[i])%mod)*quick(a[i], mod-2)%mod;}printf("%d", (mod-ans+1)%mod);return 0;
}
费马小定理【模板例题】相关推荐
- Lucas+阶乘打表+费马小定理模板2.0
目的:输入m, n, p,求出C(m,n)%p的精确值 基础: 1.费马小定理:已知整数a和质数p,其中Gcd(a, p)==1,那么a^(p-1)%p==1恒成立 2.要求出(a/b)%p的值(p一 ...
- luogu P2613 【模板】有理数取余(费马小定理,乘法逆元)
整理的算法模板合集: ACM模板 目录 题目传送门 题目传送门 相当于是一个高精的费马小定理求乘法逆元.虽然数据达到了101000110^{10001}1010001,但是我们可以使用快读然后一直模m ...
- 数论杂谈(欧拉定理与费马小定理结论与应用)
文章目录 欧拉定理: 欧拉定理性质: 扩展欧拉定理: 费马小定理: 指数循环节 费马大定理 逆元: 例题 原根 定义: 原根存在条件 例题 快速幂 代码 矩阵快速幂 原理: 代码: 欧拉定理: aφ( ...
- 算法 {欧拉函数,欧拉定理,费马小定理}
欧拉函数 定义 ϕ ( x ) , x ∈ N + \phi(x), \ \ x \in N^+ ϕ(x), x∈N+ means the number of y ∈ N + y \in N^+ y ...
- 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...
- 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明
一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...
- 初等数论四大定理(威尔逊定理,欧拉定理,费马小定理,中国剩余定理)
初等数论四大定理 1. 威尔逊定理 (1) 结论 当且仅当ppp为素数时,(p−1)!≡−1(modp)(p-1)!\equiv -1(\mod p)(p−1)!≡−1(modp). (2) 证明 充 ...
- 快速幂-Jxc军训 (费马小定理+求概率)(2021-08-17)
Jxc军训 题目 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个nn的矩阵,此时天上有m朵云,这些云会随机分布在m个不同 ...
- 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)
乘法逆元 对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n) 一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 逆元的含义:模n意义下,1个数a如果 ...
最新文章
- Seata RPC 模块的重构之路
- java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解
- 用Fortify SCA分析代码漏洞
- 第一章 简单工厂模式
- 每天十分钟系列:JS数据操作之神奇的map()
- ruby hash方法_Ruby中带有示例的Hash.keys方法
- 跨浏览器实现等高栏 Equal Height Columns with Cross-Browser CSS
- Linux内核性能架构:perf_event
- LVS(DR)+keepalived实现高可用负载均衡
- Ubuntu16.04和树莓派3B编译opencv3
- atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
- <2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结
- c语言温度转换作业帮,C++摄氏度和华氏度互相转化
- 计算机编程学英语词汇,计算机编程常用英语词汇
- MaximalRectangle
- 什么原因让你对程序员失去了往日的热情?
- 谷歌EfficientNet高效卷积网络的学习和使用
- 微信个人收款码于订单应用之解决方案
- Collaborative Filtering for Implicit Feedback Datasets结论公式推导
- SQL SERVER 如何调试存储过程