//package fuc;

import java.io.PrintStream;
import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
new Task().main();
}
}
class frac{
BigInteger a,b;
frac(){
a=BigInteger.ZERO;
b=BigInteger.ONE;
}
frac(BigInteger a,BigInteger b){
this.a=a;
this.b=b;
}
frac sub(frac t){
BigInteger p, q, d;
p = a.multiply(t.b);
p = p.subtract(t.a.multiply(b));
q = b.multiply(t.b);
d = p.gcd(q);
p = p.divide(d);
q = q.divide(d);
return new frac(p, q);
}
frac add(frac t){
BigInteger d, p, q;
p = a.multiply(t.b);
p = p.add(t.a.multiply(b));
q = b.multiply(t.b);
d = p.gcd(q);
p = p.divide(d);
q = q.divide(d);
return new frac(p, q);
}
frac div(frac t) {
BigInteger p, q, d;
p = a.multiply(t.b);
q = b.multiply(t.a);
d = p.gcd(q);
p = p.divide(d);
q = q.divide(d);
return new frac(p, q);
}
frac mul(frac t) {
BigInteger p, q, d;
p = a.multiply(t.a);
q = b.multiply(t.b);
d = p.gcd(q);
p = p.divide(d);
q = q.divide(d);
return new frac(p, q);
}
frac abs() {
return new frac(a.abs(), b.abs());
}
int compareTo(frac t) {
t = this.sub(t);
return t.a.compareTo(BigInteger.ZERO);
}
boolean zero() {
return a.equals(BigInteger.ZERO);
}
}
class Task{ Scanner cin = new Scanner(System.in);
PrintStream cout = System.out;
BigInteger ONE= BigInteger.ONE;
BigInteger ZERO=BigInteger.ZERO;
frac[][] a = new frac[211][211];
frac[] x = new frac[211];
frac t;
frac zero=new frac(ZERO,ONE);
frac r,one =new frac(ONE,ONE);
boolean gauss(int n){
int i,j,k,row;
for(i=1;i<=n;i++){
row=i;
for (j=i+1;j<=n;j++){
if (a[row][i].abs().compareTo(a[j][i].abs())<0){
row = j;
}
}
if (a[row][i].compareTo(zero)==0){
return false;
}
if (row!=i){
for (k=i;k<=n;k++){
t=a[row][k];
a[row][k]=a[i][k];
a[i][k]=t;
}
t=x[row];
x[row]=x[i];
x[i]=t;
}
for (j=i+1;j<=n;j++){
r=a[j][i].div(a[i][i]);
a[j][i]=zero;
for (k=i+1;k<=n;k++){
a[j][k]=a[j][k].sub(r.mul(a[i][k]));
}
x[j]=x[j].sub(r.mul(x[i]));
}
}
for (i=n;i>=1;i--){
for (j=i-1;j>=1;j--){
r=a[j][i].div(a[i][i]);
a[j][i]=zero;
x[j]=x[j].sub(r.mul(x[i]));
}
}
for (i=1;i<=n;i++){
x[i]=x[i].div(a[i][i]);
}
return true;
} void main(){
int n,i,j;
while(cin.hasNext()){
n = cin.nextInt();
for (i=1; i<= n; ++i){
for (j=1; j<=n; ++j){
a[i][j]=new frac(cin.nextBigInteger(),ONE);
}
x[i]=new frac(cin.nextBigInteger(),ONE);
}
if (!gauss(n)){
cout.println("No solution.");
}
else{
for (i=1;i<=n;i++){
if (x[i].b.compareTo(ZERO)<0){
x[i].a=x[i].a.negate();
x[i].b=x[i].b.negate();
}
}
for (i=1;i<=n;i++){
cout.print(x[i].a);
if (x[i].b.compareTo(ONE)!=0){
cout.print("/"+x[i].b);
}
cout.println();
}
}
cout.println();
}
} }

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2449

java高斯消元模板的更多相关文章

  1. 高斯消元模板!!!bzoj1013

    /* 高斯消元模板题 n维球体确定圆心必须要用到n+1个点 设圆心坐标(x1,x2,x3,x4...xn),半径为C 设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为 (x1-a ...

  2. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  3. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  4. 【转】高斯消元模板 by kuangbin

    写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...

  5. kuangbin大佬的高斯消元模板

    dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...

  6. 高斯消元模板(pascal)

    洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...

  7. hdu5955 Guessing the Dice Roll【AC自动机】【高斯消元】【概率】

    含高斯消元模板 2016沈阳区域赛http://acm.hdu.edu.cn/showproblem.php?pid=5955 Guessing the Dice Roll Time Limit: 2 ...

  8. NEFU 503 矩阵求解 (非01异或的高斯消元)

    题目链接 中文题,高斯消元模板题. #include <iostream> #include <cstdio> #include <cmath> #include ...

  9. hdu4418(概率dp + 高斯消元)

    应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...

随机推荐

  1. Mongodb的锁 原子性 隔离性 一致性

    读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...

  2. mysql 在gtid环境下缺少一部分binlog部署从库

    我的环境: 有两台linux服务器 一台是192.168.1.1  mysql  端口3301 一台是192.168.1.2   mysql 端口3303 要讨论如何恢复从库,我们得先来了解如下一些概 ...

  3. QT:在其他窗口中显示QMainWindow

    问题:在QFrame中嵌入QMainWindow窗口,却无法显示QMainWindow窗口,调用QMainWindow的show()却能出现单独弹出一个QMainWindow窗口. 解决: 由于QMa ...

  4. CF293E Close Vertices 点分治+树状数组

    开始zz写了一个主席树,后来发现写个树状数组就行~ #include <cstdio> #include <vector> #include <algorithm> ...

  5. 015 pip的使用

    目录 一.配置pip环境变量 二.Cmd终端使用pip 三.Pycharm使用pip 四.Jupyter使用pip 如果把python假想成一部手机,那么pip就是这部手机上的应用管家/APP,他可以 ...

  6. QTableWidgetItem QTreeWidgwtItem 复选框的取消显示方法

    思路: QTableWidgetItem   :item->setData(Qt::CheckStateRole,QVariant()); QTreeWidgwtItem  :item-> ...

  7. JIRA7.13版本创建项目:问题类型管理(一)

    1.1 创建项目 一个项目是对一系列相关问题的综合管理.在Jira 中,可以通过以下方式创建项目.首先,需要具有项目创建权限的人登录后台管理界面,然后选择项目,通过创建项目按钮进入到项目创建的界面. ...

  8. 【Java基础】谈谈集合.List

    摘自:https://www.cnblogs.com/54chensongxia/p/11722828.html 目录 1. ArrayList 1.1 ArrayList的构造 1.2 add方法 ...

  9. python环境下安装virtualenv,virtualenvwrapper

    在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...

  10. C++入门经典-例3.19-使用break跳出循环

    1:代码如下: // 3.19.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...