模板题——快速幂,高斯消元
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;
}
模板题——快速幂,高斯消元相关推荐
- 2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组
2020ICPC济南站 A题 Matrix Equation高斯消元求异或方程组 题意 思路 Code() 传送门: https://ac.nowcoder.com/acm/contest/10662 ...
- 【洛谷P3389】【模板】高斯消元
题目链接 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1, a2 .....an 和 b,代表一组方程. 输 ...
- Covering(dfs打表+高斯消元+矩阵快速幂)
传送门 这是个递推题,可以看下维基的各种解释:传送门 假设递推式是一个四元方程,至于为什么也不大清楚(可能是操场是4*n的缘故) 然后得到递推式f(n)=f(n-1)+5*f(n-2)+f(n-3)- ...
- [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题
[AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...
- HDU 3359 高斯消元模板题,
http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...
- ACM数学模板1 高斯消元 Gaussian Elimination
声明: 题目来源: https://www.luogu.com.cn/problem/P3389 https://www.luogu.com.cn/problem/P2447 https://ac.n ...
- 高斯消元相关问题学习和模板整理
目录 前言 高斯消元法 模板 行列式求值 模板 矩阵求逆 模板 前言 为什么要写这篇文章?因为icpc济南J题翻车了,不会写行列式,手里没板子,现场抄书手写,过不了实属正常,所以必须要整理一下高斯消元 ...
- 解方程 ( 迭代法/牛顿迭代/高斯消元 ) 详解及模板
欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/--萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗-- 一.迭代法解方程 ( ...
- 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)
题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...
- 矩阵树 Matrix-Tree 定理实现模板(高斯消元求解行列式)
大佬1博客:https://www.cnblogs.com/zj75211/p/8039443.html 大佬2博客:https://www.cnblogs.com/yangsongyi/p/1069 ...
最新文章
- AI实时特效,魔幻修图,Adobe Photoshop相机拯救PS菜鸟
- Sencha Touch 2.3 自定义主题皮肤,颜色
- win10无法连接到Windows(SENS)服务网络连不上怎么办
- CentOS下初次使用MySQL
- Python基础教程— Struct模块
- 使用SVN钩子运行PHP更新服务器代码的注意事项
- 分类变量如何设置变量值的显示顺序
- ubuntu无密码登录
- 几个ASP.NET小技巧
- 动态规划(三)——最少硬币和所有硬币问题
- scala json处理入门
- Delphi开发经验谈
- error: Zip file too big (greater than 4294959102 bytes)
- 服务器msdtc没有安全显示项,MSDTC 问题疑难解答 - BizTalk Server | Microsoft Docs
- 【逆向JS】调用网易云音乐搜歌功能并爬取评论Python/Java
- 冰点还原容易出现的问题总结
- 最短路径算法----Floyd-warshall(十字交叉算法证明)
- 装mysql电脑网卡不见了_电脑本地连接不见了,教您怎么解决
- 精练战略云 VS “华丽“战术云
- HTML之Data attributes
热门文章
- php正则字母,PHP匹配连续的数字或字母的正则表达式
- 自己配置外接屏幕和驱动,最终通过hdmi连接
- python操作数据库之删除数据
- Java重构面向过程代码_代码重构那些事儿
- windows内核_Windows内核漏洞利用
- python数据环境的搭建_Python数据分析环境搭建
- SQL:查询表中各类点数量以及各类点满足某条件数量
- 计算机开机后在干啥,电脑开机时到底在干什么
- Repeater_Table_单击_Repeater样式,Table样式,交替变色,单击变色
- KMP算法计算next数组 匹配字符串