• 费马小定理:
    若 ppp 为素数 且 a,pa,pa,p 互素 ,则 ap−1≡1(modp)a^{p-1} \equiv 1 \pmod pap−1≡1(modp)
  • 欧拉定理:
    欧拉函数 φ(m)\varphi (m)φ(m) 表示 111 到 mmm 中与 mmm 互素的个数
    若 a,ma,ma,m 互素,则 aφ(m)≡1(modm)a^{\varphi(m)} \equiv 1\pmod maφ(m)≡1(modm)

例题 :汉堡与三明治

遇到计算 12(mod10007)\frac{1}{2} \pmod {10007}21​(mod10007) 等价于 1∗(2的逆元)1*{(2的逆元)}1∗(2的逆元)

计算时乘以 500450045004 就相当于乘以 12\frac{1}{2}21​

#include<bits/stdc++.h>
using namespace std;
const int mod=10007;
const int MAXN=2005;
int f[MAXN][MAXN];
bool mem[MAXN][MAXN];
int q(int n,int a,int b)
{if(mem[a][b]) return f[a][b];mem[a][b]=1;if(n==1){if(a==0) return 0;if(b==0) return 1;return f[a][b]=5004;}else{if(a==0) return 0;if(b==0) return 1;return f[a][b]= ( 5004*q(n-1,a-1,b)%mod + 5004*q(n-1,a,b-1)%mod ) %mod;}
}
int n,a,b;
int main()
{cin>>n>>a>>b;cout<<q(n,a,b)%mod;return 0;
}

例题:无尽的循环

首先,根据题意可推出以下方程:
a+cx≡b(mod2k)a+cx\equiv b\space \pmod {2^k}a+cx≡b (mod2k) , 若 xxx 有解则循环次数有限,无解则无限
等价于
cx≡b−a(mod2k)cx\equiv b-a\pmod{2^k}cx≡b−a(mod2k)

最后使用快速幂即可

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,c,k,mod;
int get_pow(int x,int p)
{int res=1,base=x;while(p>0){if(p & 1) res=(res*base)%mod;base=base*base%mod;p>>=1;}return res;
}
void print(int x)
{while(x<0)x+=mod;cout<<x%mod;
}
signed main()
{cin>>a>>b>>c>>k;mod=1LL<<k; int p = (1<<(k-1)) - 1;  int t = b-a;if(c%2!=0)print( (t*get_pow(c,p))%mod );else{while(c%2==0){if(t%2==0) c/=2, t/=2, mod/=2;else {puts("Inf"); return 0;}}int p = (mod>>1) - 1;print( (t*get_pow(c,p))%mod );}return 0;
}

例题:哈希碰撞

朴素的解法是枚举每一位的字母,时间复杂度为 O(26n)O(26^n)O(26n),此题最高为 261026^{10}2610

考虑折半搜索,复杂度降为 265+265<<261026^5+26^5<<26^{10}265+265<<2610

#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,n,t,mod,inv;
int get_pow(int a,int b)
{int base=a, res=1;while(b>0){if(b&1) res*=base, res%=mod;base*=base, base%=mod;b>>=1;}return res;
}int cnt[1<<25];void f1(int x,int s)
{if(x==n/2) {cnt[s]++; return ;}for(int i=1;i<=26;i++)f1(x+1,((33*s)^i)%mod);
}int f2(int x,int target)
{if(x==n/2)   return cnt[target];int res=0;for(int i=1;i<=26;i++){int new_target=( (target^i)*inv ) % mod;res+=f2(x-1,new_target);}return res;
}
signed main()
{cin>>m>>t>>n; mod=(1<<m);inv=get_pow(33,(1<<(m-1))-1);f1(0,0);cout<<f2(n,t);return 0;
}

费马小定理 欧拉定理 逆元相关推荐

  1. 数学--数论--费马小定理+求逆元

    1.费马小定理: (此处的p为素数) 证明: 费马小定理求逆元 如果p为小素数我们选择直接暴力,时间复杂度为: int Fermat_inverse(int a,int mod) {int res = ...

  2. 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~

    题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...

  3. hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)

    Description 小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题.为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影.(若干代指大于0)  每 ...

  4. Detachment HDU - 5976(数学+费马小定理求逆元+前缀和前缀积)

    题意:给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积. 题解:本文参考传送门 首先:那就是不能分出1来,因为1乘任何数都是它本身,而因为分出了1,另一部分也变小了 ...

  5. 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】...

    链接:https://www.nowcoder.com/acm/contest/106/B 来源:牛客网题目描述 It's universally acknowledged that there're ...

  6. 数论--费马小定理求逆元

    ACM常用模板合集 int Fermat_inverse(int a,int mod) {int res = 1;for(int i = 1;i < mod - 1;++i) res *= a; ...

  7. 初等数论--同余--欧拉函数、欧拉定理、费马小定理

    初等数论--同余--欧拉函数.欧拉定理.费马小定理 概念 同余类,既约同余类 欧拉函数 完全剩余系,既约剩余系 关于完全剩余系.既约剩余系一些比较简单的定理 欧拉定理.费马小定理 博主是初学初等数论( ...

  8. 同余定理 逆元 中国剩余定理 费马小定理

    同余定理 同余定理是数论中的重要概念.给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m). 两个整数a ...

  9. 除法取模与逆元/费马小定理

    对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为.(都要求a和m互质) 推导过程如下(摘自Acd ...

  10. 【BZOJ】3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(排列组合+乘法逆元+欧拉定理/费马小定理)...

    http://www.lydsy.com/JudgeOnline/problem.php?id=3398 以下牡牛为a,牝牛为b. 学完排列计数后试着来写这题,"至少"一词可以给我 ...

最新文章

  1. 中国游戏中心让计算机死机,win10玩游戏不定时死机
  2. Django model.py表单设置默认值允许为空
  3. IT创业迷魂圈:不要画饼充饥
  4. 2.Cocos2d-x-3.2编写3d打飞机,项目代码总结
  5. 【嵌入式】Libmodbus下载和编译详解
  6. npm mysql 事务_一文解读MySQL事务
  7. Git 小问题:fatal: not a git repository (or any of the parent directories): .git
  8. Spring AOP(五)之Around增强处理
  9. 通过javascritp对表格进行列拖动排序
  10. QQ输入法用户体验评价
  11. firemonkey mysql_FireMonkey下画图线条的大小
  12. 服务器的日常运维巡检视频,日常运维检查记录表
  13. php 二维数组变一维数组,php中怎么将二维数组转为一维数组
  14. Vivado IP核之定点数转为浮点数Floating-point
  15. 7月生日会|清凉的惊喜与祝福
  16. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的解决方法
  17. win10任务栏图标无法固定,也无法取消固定,
  18. 图灵计算机科学的奠基人英文,阿兰.图灵被认为是计算机科学的奠基人,他的主要贡献是:...
  19. dhu 1.2 链表的中间结点
  20. 计算机视觉--图像的拼接融合

热门文章

  1. cad化工设备绘图_auto cad在化工设备制图中的应用 ——致初学cad绘图者.ppt
  2. 2020 愿远方依旧有篮球为伴 致敬24号 科比
  3. ModSecurity的规则
  4. Vue事件修饰符——.prevent 和.passive
  5. KTV点歌系统数字点歌功能
  6. 2020-4-18 深度学习笔记20 - 深度生成模型 2 (深度信念网络DBN,深度玻尔兹曼机DBM)
  7. Latex 提示错误Improper alphabetic constant
  8. VS2010开发的winform程序在XP系统打不开的原因(与ico图标像素有关)
  9. 编程把系统窗口背景颜色设置成护眼的淡绿色
  10. 51单片机读取引脚值原理