intqmi(int a,int b,int p){int res =1;while(b){if(b &1) res = res * a % p;
a = a * a % p;
b >>=1;}return res;}
线性筛法(素数+欧拉函数)
int st[N1], pri[N1], cnt, phi[N1];intgetp(int n){
phi[1]=1;for(int i =2; i <= n; i ++){if(!st[i]) pri[++ cnt]= i, phi[i]= i -1;for(int j =1; j <= cnt && pri[j]<= n / i; j ++){
st[pri[j]* i]= pri[j];if(i % pri[j]==0){
phi[pri[j]* i]= phi[i]* pri[j];break;}
phi[pri[j]* i]= phi[i]*(pri[j]-1);}}}
扩展欧几里得算法
intexgcd(int a,int b,int&x,int&y){if(b ==0){
x =1;
y =0;return a;}/*
int d = exgcd(b, a % b, x, y);
int tmp = x;
x = y;
y = tmp - a / b * y;
*/int d =exgcd(b, a % b, y, x);
y -= a / b * x;return d;}
欧拉函数(一个数)
intphi_(int x){int phi = x;for(int i =2; i <= x / i; i ++){if(x % i ==0){
phi = phi *(i -1)/ i;while(x % i ==0) x /= i;}}if(x >1) phi = phi *(x -1)/ x;return phi;}
ll phi(int p){
ll ret=p;for(int i=2;i*i<=p;++i){if(p%i==0){
ret-=ret/i;while(p%i==0)p/=i;}}if(p>1)ret-=ret/p;return ret;}
递推求逆元
voidgetinv(int n,int p){
inv[1]=1;for(int i =2; i <= n; i ++) inv[i]= inv[p % i]*(p - p / i)% p;}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现