高斯异或方程组

高斯异或:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 110;
int n;
int a[N][N];

int gauss(){
    int c,r;
    for(c=0,r=0;c<n;c++){
        int t = r;
        for(int i = r;i<n;i++){
            if(a[i][c]){
                t = i;
                break;
            }
        }
        if(!a[t][c]) continue;
        for(int i=c;i<=n;i++) swap(a[t][i],a[r][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[r][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;j++){
            cin>>a[i][j];
        }
    }
    int t = gauss();
    if(t==0){
        for(int i=0;i<n;i++) printf("%d\n",a[i][n]);
    }else if(t==1) printf("Multiple sets of solutions\n");
    else printf("No solution\n");

    return 0;
}
全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
Rena1ssance_:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务