zoukankan      html  css  js  c++  java
  • VIJOS 1052贾老二算算术 (高斯消元)

    描述

    贾老二是个品学兼优的好学生,但由于智商问题,算术学得不是很好,尤其是在解方程这个方面。虽然他解决 2x=2 这样的方程游刃有余,但是对于 {x+y=3 x-y=1} 这样的方程组就束手无策了。于是他要你来帮忙。前提是一次方程组且保证在integer的范围内可以处理所有问题。

    格式

    输入格式

    第一行一个数字N(1≤N≤100)表示要求的未知数的个数,同时也是所给的方程个数。

    第2到N+1行,每行N+1个数。前N个表示第1到N个未知数的系数。第N+1个数表示N个未知数乘以各自系数后的加和。(保证有唯一整数解)

    输出格式

    一行N个数,表示第1到N个未知数的值。

    模板题!

     1 #include<algorithm>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<iostream>
     6 double a[2005][2005];
     7 int n;
     8 int gcd(int a,int b){
     9     if (b==0) return a;
    10     else return gcd(b,a%b);
    11 }
    12 void gauss(){
    13     int now=1,to,ggcd;
    14     double t;
    15     for (int i=1;i<=n;i++){
    16         for (to=now;to<=n;to++) if (a[to][i]!=0) break;
    17         if (to>n) continue;
    18         if (to!=now) for (int j=1;j<=n+1;j++) std::swap(a[to][j],a[now][j]);
    19         t=a[now][i];
    20         for (int j=1;j<=n+1;j++) a[now][j]/=t;
    21         for (int j=1;j<=n;j++)
    22          if (j!=now){
    23                 t=a[j][i];
    24                 for (int k=1;k<=n+1;k++)
    25                  a[j][k]-=t*a[now][k];
    26          }
    27         now++;  
    28     }
    29 }
    30 int main(){
    31     scanf("%d",&n);
    32     for (int i=1;i<=n;i++){
    33         for (int j=1;j<=n+1;j++)
    34          scanf("%lf",&a[i][j]);
    35     }
    36     gauss();
    37     for (int i=1;i<=n;i++)
    38      printf("%d ",(int)round(a[i][n+1]));
    39 }
  • 相关阅读:
    Pycharm在创建py文件时,如何自动添加文件头注释(类似于钩子特性)?
    Python 函数传递list,传递dict 以及*args和**kargs
    RobotFrameWork(三)数据类型
    shell中脚本变量和函数变量的作用域
    python之json
    Python命名规则
    gdb调试5--工程项目的断点调试
    First Missing Positive
    使用WinDbg下的gflags工具导致程序无法执行
    c++ 从标注输入流读取行
  • 原文地址:https://www.cnblogs.com/qzqzgfy/p/5543948.html
Copyright © 2011-2022 走看看