zoukankan      html  css  js  c++  java
  • 【洛谷团队题目】

    题目描述

    给你一个N(n10)阶行列式,请计算出它的值

    输入输出格式

    输入格式:

    第一行有一个整数n
    在以下n行中,每行有n个整数,表示该行列式

    输出格式:

    这个行列式的值

    输入输出样例

    输入样例#1: 
    8
    2 10 4 4 3 6 10 6
    1 10 9 3 2 1 6 7
    3 9 8 7 1 1 8 7
    2 10 8 6 9 9 3 4
    1 7 1 8 2 6 2 3
    9 2 4 8 10 6 10 3
    3 6 7 9 8 2 8 1
    2 9 2 1 10 7 4 5
    输出样例#1:
    -135742
    输入样例#2: 
    4
    1 2 3 4
    1 3 4 1
    1 4 1 2
    1 1 2 3

    输出样例#2: 

    16
    无敌水的板子
    主要用到了高斯消元的知识(但略有不同)
    不会的可以看看上一篇博文
    直接来代码QAQ
    #include<bits/stdc++.h>
    using namespace std;
    double n, a[20][20], ans = 1;
    int sum;
    inline void qwq(int x, int y, double k) 
    {
        for (int i = 1; i <= n; ++i)
            a[y][i] -= (double)(k * a[x][i]);
    }
    inline void qaq(int x, int y)
    {
        for (int i = 1; i <= n; ++i)
            swap(a[i][x], a[i][y]);
    }
    inline double QAQ(int x, double k) 
    {
        for (int i = 1; i <= n; ++i)
            a[x][i] /= k;
        return k;
    }
    int main()
    {
        scanf("%lf", &n);
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= n; ++j)
                scanf("%lf", &a[i][j]);
        for (int i = 1; i < n; ++i)
        {   
            sum=i;
            while (a[i][i] == 0 && sum<=n) 
            {
                qaq(i, sum + 1); 
                ans *= -1;
                sum++;
            }
            ans *= QAQ(i, a[i][i]);
            for (int j = i + 1; j <= n; ++j)
                qwq(i, j, a[j][i]);
        }
        for (int i = 1; i <= n; ++i)
            ans *= a[i][i];
        printf("%0.0lf", ans);
        return 0;
    }

    ok,非常漂亮

  • 相关阅读:
    .htaccess是什么?.htaccess几个简单应用
    php提高效率
    php require和include区别
    excel的常用公式
    php时间日期处理
    json详解
    python列表-增强的赋值操作
    python列表-使用
    python列表-简单操作
    python列表-定义
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/10705288.html
Copyright © 2011-2022 走看看