//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. springmvc4.3.7中使用RequestBody,传入json参数时,得到错误415 Unsupported Media Type

    在新建一个maven的项目的时候,当时并非springboot项目,是通过xml来配置的项目.在项目中DispatcherServlet的配置文件中配置了annotation-driven的, < ...

  2. Android Studio实现登陆注册功能之手机号验证

    我们平常写的登陆注册功能,就是很普通的注册一个账号,设置密码,然后登录.这次,想写一个与之前稍微不一样的登陆注册界面,于是想到了手机号验证的方式. 现在我们市面上出现的很多app,都是采用的手机号注册 ...

  3. Redis常见面试问题及答案

    大量key在同一时间过期,注意什么? 如果过期时间过于集中,会导致Redis可能会出现短暂的卡顿现象.严重的话会出现缓存雪崩,一般需要在时间上加一个随机值, 使用过期时间分散一些. Redis分布式锁 ...

  4. 接口headers

    接口headers from-data header: { 'Content-Type':'application/json'},     header: { 'Content-Type':'appl ...

  5. linux中more命令如何使用

         more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上.兄弟连Linux培训教程() more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(sp ...

  6. 计算机网络(十一),HTTP和HTTPS区别

    目录 1.SSL(Security Sockets Layer,安全套接层) 2.加密方式 3.HTTPS数据传输流程 4.HTTP和HTTPS的区别 5.HTTP真的很安全吗 十一.HTTP和HTT ...

  7. 3.JSP

        JSP(Java Server Pages)页面是指扩展名为.jsp的文件,在一个JSP中可以包含指令标识,HTML代码, JavaScript代码,嵌入的Java代码,注释和JSP动作标识等 ...

  8. 【BZOJ4259】 残缺的字符串

    Description 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同 ...

  9. 对象转JSON字符串与json字符串转对象方法

    JSON.stringify()[从一个对象中解析出字符串] JSON.parse()[从一个json字符串中解析出对象] var data = {"nums": 1, " ...

  10. R_Studio(贷款)数据规范化处理[最小-最大规范化、零-均值规范化、小数定标规范化]

    农场申请贷款.csv 对“农场申请贷款.csv”中农场大小.降雨量.农场质量.农场收入进行数据规范化处理 行数[4 5 6 7] “农场申请贷款.csv”中存在缺失值,已对数据进行预处理 setwd( ...