当前位置:网站首页>高斯消元 AcWing 884. 高斯消元解异或線性方程組
高斯消元 AcWing 884. 高斯消元解异或線性方程組
2022-07-05 06:18:00 【T_Y_F666】
高斯消元 AcWing 884. 高斯消元解异或線性方程組
原題鏈接
算法標簽
線性空間 高斯消元 异或
思路
代碼
#include<bits/stdc++.h>
#define int long long
#define abs fabs
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
const int N = 105;
int a[N][N], eps = 1e-8;
int n;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
int gu(){// 高斯消元,答案存於a[i][n]中,0 <= i < n
// c代錶列 r代錶行
int c, r;
// 按列枚舉
for(c=0, r=0; c<n; ++c){
int t=r;
rep(i, r, n){
if(a[i][c]){// 找非零行
t=i;
break;
}
}
if(!a[t][c]){
continue;
}
rep(i, c, n+1){// 將非零行換到最頂端
swap(a[r][i], a[t][i]);
}
rep(i, r+1, n){// 用非零行與下面列進行運算消除為0
if(a[i][c]){
Rep(j, n, c){
a[i][j]^=a[r][j];
}
}
}
++r;
}
if(r<n){
rep(i, r, n){
if(abs(a[i][n])>eps){
return 2;// 無解
}
}
return 1;// 有無窮多組解
}
Rep(i, n-1, 0){
rep(j, i+1, n){
a[i][n]^=a[i][j]*a[j][n];
}
}
return 0;// 有唯一解
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
n=read();
rep(i, 0, n){
rep(j, 0, n+1){
a[i][j]=read();
}
}
int t=gu();
if(t==2){
puts("No solution");
}else if(t==1){
puts("Multiple sets of solutions");
}else{
rep(i, 0, n){
printf("%lld\n", a[i][n]);
}
}
return 0;
}
原創不易
轉載請標明出處
如果對你有所幫助 別忘啦點贊支持哈
边栏推荐
猜你喜欢
Leetcode stack related
Navicat连接Oracle数据库报错ORA-28547或ORA-03135
开源存储这么香,为何我们还要坚持自研?
快速使用Amazon MemoryDB并构建你专属的Redis内存数据库
Quickly use Amazon memorydb and build your own redis memory database
RGB LED infinite mirror controlled by Arduino
Groupbykey() and reducebykey() and combinebykey() in spark
SQLMAP使用教程(二)实战技巧一
Traditional databases are gradually "difficult to adapt", and cloud native databases stand out
LeetCode-54
随机推荐
Overview of variable resistors - structure, operation and different applications
【Rust 笔记】17-并发(下)
MySQL advanced part 1: stored procedures and functions
leetcode-1200:最小绝对差
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
数据可视化图表总结(二)
1041 Be Unique
Simple selection sort of selection sort
SQL三种连接:内连接、外连接、交叉连接
可变电阻器概述——结构、工作和不同应用
js快速将json数据转换为url参数
Chapter 6 relational database theory
Leetcode array operation
Regulations for network security events of vocational group in 2022 Guizhou Vocational College skill competition
Shutter web hardware keyboard monitoring
leetcode-6110:网格图中递增路径的数目
leetcode-9:回文数
927. Trisection simulation
什么是套接字?Socket基本介绍
开源存储这么香,为何我们还要坚持自研?