1.快速幂模板

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int qmi(int a,int k,int p)
{int res=1;while(k){if(k&1)res=(ll) res*a%p;k>>=1;a=(ll)a*a%p;}return res;
}
int main()
{int n;scanf("%d",&n);while(n--){int a,k,p;scanf("%d%d%d",&a,&k,&p);printf("%d\n",qmi(a,k,p));}return 0;
}

2.快速幂求乘法逆元:使用费马定理,即求b^(p-2)

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int qmi(int a,int k,int p)//a^k%p
{ll res=1;while(k){if(k&1) res=(ll) res*a%p;k>>=1;a=(ll)a*a%p;}return res;
}
int main()
{int n;cin>>n;while(n--){int a,p;scanf("%d%d",&a,&p);if(a%p) printf("%d\n",qmi(a,p-2,p));else puts("impossible");}return 0;
}

3.扩展欧几里得算法

#include <bits/stdc++.h>using namespace std;
int exgcd(int a,int b,int &x,int &y)
{if(!b){x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=(a/b)*x;return d;
}
int main()
{int n;scanf("%d",&n);while(n--){int a,b;scanf("%d%d",&a,&b);int x,y;exgcd(a,b,x,y);printf("%d %d\n",x,y);}return 0;
}

4.线性同余方程:使用扩展欧几里得算法

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int exgcd(int a,int b,int &x,int &y)
{if(!b){x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=(a/b)*x;return d;
}
int main()
{int n;scanf("%d",&n);while(n--){int a,b,m;scanf("%d%d%d",&a,&b,&m);int x,y;int d=exgcd(a,m,x,y);if(b%d) puts("impossible");else printf("%d\n",(ll) b/d*x%m);}return 0;
}

5.高斯消元法解线性方程组

#include <bits/stdc++.h>using namespace std;
const int N=110;
const double eps=1e-6;
int n;
double a[N][N];
int gass()
{int c,r;for(c=0,r=0;c<n;c++)//枚举每一列{int t=r;for(int i=r;i<n;i++)if(fabs(a[i][c])>fabs(a[t][c]))t=i;//找当前列绝对值最大的一行if(fabs(a[t][c])<eps) continue;//将当前这一行换到最上面for(int i=c;i<n+1;i++) swap(a[t][i],a[r][i]);//将该行第一个数变成1for(int i=n;i>=c;i--) a[r][i]/=a[r][c];//将下面所有行的当前列消成0for(int i=r+1;i<n;i++)if(fabs(a[i][c])>eps)for(int j=n;j>=c;j--)a[i][j]-=a[r][j]*a[i][c];r++;}if(r<n){for(int i=r;i<n;i++)if(fabs(a[i][n])>eps)return 2;//0!=0无解return 1;//0=0无数解}//唯一解情况,处理答案——>最后一列for(int i=n-1;i>=0;i--)for(int j =i+1;j<n;j++)a[i][n]-=a[j][n]*a[i][j];return 0;
}
int main()
{cin>>n;for(int i=0;i<n;i++)for(int j=0;j<n+1;j++)cin>>a[i][j];int t=gass();if (t==0){for(int i=0; i<n; i++ ) printf("%.2f\n", a[i][n]);}else if (t==1) puts("Infinite group solutions");else puts("No solution");return 0;
}

6.高斯消元求异或线性方程组的根

#include <bits/stdc++.h>using namespace std;
const int N=110;
int n;
int a[N][N];
int gauss()
{int c,r;for(c=r=0;c<n;c++){int t=r;for(int i=r;i<n;i++)if(a[i][c]) t=i;if(!a[t][c]) continue;for(int i=c;i<=n;i++) swap(a[r][i],a[t][i]);for(int i=r+1;i<n;i++)if(a[i][c])for(int j=n;j>=c;j--) a[i][j]^=a[r][j];r++;}if(r<n){for(int i=r;i<n;i++)if(a[i][n]) return 2;return 1;}for(int i=n-1;i>=0;i--)for(int j=i+1;j<n;j++)a[i][n]^=a[i][j]*a[j][n];return 0;
}
int main()
{cin>>n;for(int i=0;i<n;i++)for(int j=0;j<n+1;j++)cin>>a[i][j];int t=gauss();if(t==0){for(int i=0;i<n;i++) cout<<a[i][n]<<endl;}else if(t==1) puts("Multiple sets of solutions");else puts("No solution");return 0;
}

模板题——快速幂,高斯消元相关推荐

  1. 2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组

    2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组 题意 思路 Code() 传送门: https://ac.nowcoder.com/acm/contest/10662 ...

  2. 【洛谷P3389】【模板】高斯消元

    题目链接 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1, a2 .....an​ 和 b,代表一组方程. 输 ...

  3. Covering(dfs打表+高斯消元+矩阵快速幂)

    传送门 这是个递推题,可以看下维基的各种解释:传送门 假设递推式是一个四元方程,至于为什么也不大清楚(可能是操场是4*n的缘故) 然后得到递推式f(n)=f(n-1)+5*f(n-2)+f(n-3)- ...

  4. [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题

    [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...

  5. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  6. ACM数学模板1 高斯消元 Gaussian Elimination

    声明: 题目来源: https://www.luogu.com.cn/problem/P3389 https://www.luogu.com.cn/problem/P2447 https://ac.n ...

  7. 高斯消元相关问题学习和模板整理

    目录 前言 高斯消元法 模板 行列式求值 模板 矩阵求逆 模板 前言 为什么要写这篇文章?因为icpc济南J题翻车了,不会写行列式,手里没板子,现场抄书手写,过不了实属正常,所以必须要整理一下高斯消元 ...

  8. 解方程 ( 迭代法/牛顿迭代/高斯消元 ) 详解及模板

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/--萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗-- 一.迭代法解方程 ( ...

  9. 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)

    题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...

  10. 矩阵树 Matrix-Tree 定理实现模板(高斯消元求解行列式)

    大佬1博客:https://www.cnblogs.com/zj75211/p/8039443.html 大佬2博客:https://www.cnblogs.com/yangsongyi/p/1069 ...

最新文章

  1. AI实时特效,魔幻修图,Adobe Photoshop相机拯救PS菜鸟
  2. Sencha Touch 2.3 自定义主题皮肤,颜色
  3. win10无法连接到Windows(SENS)服务网络连不上怎么办
  4. CentOS下初次使用MySQL
  5. Python基础教程— Struct模块
  6. 使用SVN钩子运行PHP更新服务器代码的注意事项
  7. 分类变量如何设置变量值的显示顺序
  8. ubuntu无密码登录
  9. 几个ASP.NET小技巧
  10. 动态规划(三)——最少硬币和所有硬币问题
  11. scala json处理入门
  12. Delphi开发经验谈
  13. error: Zip file too big (greater than 4294959102 bytes)
  14. 服务器msdtc没有安全显示项,MSDTC 问题疑难解答 - BizTalk Server | Microsoft Docs
  15. 【逆向JS】调用网易云音乐搜歌功能并爬取评论Python/Java
  16. 冰点还原容易出现的问题总结
  17. 最短路径算法----Floyd-warshall(十字交叉算法证明)
  18. 装mysql电脑网卡不见了_电脑本地连接不见了,教您怎么解决
  19. 精练战略云 VS “华丽“战术云
  20. HTML之Data attributes

热门文章

  1. php正则字母,PHP匹配连续的数字或字母的正则表达式
  2. 自己配置外接屏幕和驱动,最终通过hdmi连接
  3. python操作数据库之删除数据
  4. Java重构面向过程代码_代码重构那些事儿
  5. windows内核_Windows内核漏洞利用
  6. python数据环境的搭建_Python数据分析环境搭建
  7. SQL:查询表中各类点数量以及各类点满足某条件数量
  8. 计算机开机后在干啥,电脑开机时到底在干什么
  9. Repeater_Table_单击_Repeater样式,Table样式,交替变色,单击变色
  10. KMP算法计算next数组 匹配字符串