• UVA 11542 Square 高斯消元 异或方程组求解


    题目链接:点击打开链接

    白书的例题练练手。

    P161

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define ll int
    #define LL long long
    const int mod = 1000000009;
    const int maxn = 510;
    const int maxp = 100;
    ll prime[1000],primenum;//有primenum个素数 math.h
    void PRIME(ll Max_Prime){
    	primenum=0;
    	prime[primenum++]=2;
    	for(ll i=3;i<=Max_Prime;i+=2)
    	for(ll j=0;j<primenum;j++)
    		if(i%prime[j]==0)break;
    		else if(prime[j]>sqrt((double)i) || j==primenum-1)
    		{
    			prime[primenum++]=i;
    			break;
    		}
    }
    
    typedef int Matrix[maxn][maxn];
    
    int rank(Matrix A, int m, int n) { //m个方程n个变量
        int i = 0, j = 0, k, r, u;
        while(i < m && j < n)
        {
            r = i;
            for(k = i; k < m; k++)
                if(A[k][j])
                    { r = k; break; }
            if(A[r][j])
            {
                if(r != i)
                    for(k = 0; k <= n; k++) swap(A[r][k], A[i][k]);
                for(u = i+1; u < m; u++) if(A[u][j])
                    for(k = i; k <= n; k++) A[u][k] ^= A[i][k];
                i++;
            }
            j++;
        }
        return i;
    }
    
    Matrix A;
    
    int main(){
        PRIME(500);
        int T; cin>>T;
        while(T--) {
            int n, maxp = 0;
            long long x;
            cin>> n;
            memset(A, 0, sizeof A);
            for(int i = 0; i < n; i++)
            {
                cin>> x;
                for(int j = 0; j < primenum; j++)
                    while(x % prime[j] == 0)
                {
                    maxp = max(maxp, j);
                    x /= prime[j];
                    A[j][i] ^= 1;
                }
            }
            int r = rank(A, maxp+1, n);
            cout<< (1LL << (n-r))-1 <<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    搭建Git服务器
    shell脚本的使用
    谈谈递归和回溯算法的运用
    给 Qt 添加模块
    QtQuick 中的 qml 与 Qt 的 C++
    QT 中使用 c++ 的指针
    QT 的使用及编写代码遇到的问题和解决方法
    Centos 7 上安装使用 vscode
    PHP 数组转json格式,key的保存问题
    PHP compact
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6956024.html
Copyright © 2020-2023  润新知