フェイス質問
https://www.luogu.org/problem/P2455
問題の解決策
#include <iostreamの> する#include <iomanip> の#include <cmath> の#include <cstdioを> の#define EPS 1E-5を 使用して 名前空間STD。 int型N、I、J、K、X、P。 ダブル [ 105 ] [ 105 ]、TA [ 105 ] [ 105 ]、ANS [ 105 ]、T、マックス、和; ブールブック[ 105 ]。 ブールチェック(){ int型I、J、K。 用(i = 1 ; iが<= N; iは++ ){ BOOL S = 0 。 用(J =1 ; J <= N + 1、J ++)場合(TA [I] [J] =!0)、S = 1 。 もし(S!)リターン 1 。 } ため(i = 1 ; iが<= N; iは++ ) のために(j = iは+ 1、J <= nであり、j ++ ){ BOOL S = 0 。 二重 X = TA [I] [ 1 ] / TA [J] [ 1 ]。 用(K = 1 ; K <= N + 1 ; ++ K)であれば(TA [I] [K] / TA [J] [K] = X!)S = 1 。 もし(S!)リターン 1 ; } 戻り 0 。 } int型のmain(){ CIN >> N。 BOOL宜昌= 0 。 用(i = 1 ; iが<= N; iが++ ) のために(J = 1 ; J <= N + 1、J ++){CIN >> [I] [J]。TA [i] [j]は[I] [j]は[I] [J] * = = 1.0 ;} ため(X = 1 ; X <= nであり; x ++ ){ 最大 = 0 。 ため ; <;(J ++ = N J J = xで)なら、{[X]マックス= [J]; P =(最大ファブ([J] [X]))> J;} ため(J = xであり、j <= N + 1、J ++){Tが[X] [j]を= [X] [j]は[P] [j]を= [P] [J] = T ;} ため(J = X + 1、J <= N + 1、J ++ ){ 場合(ファブ([X] [X])<EPS){ANS [X] = 2.3333。本[X] = 1。宜昌= 1。後藤L1;} そう [X] [J] =([X] [J] * 1.0)/([X] [X] * 1.0 )。 } [X] [X] = 1 。 用(J = X + 1、J <= nであり、j ++ ){ T = [J] [X]。 用(K = X; K <= N + 1 ; ++ K)[j]が[k]が[J] [K] -t * = [X] [k]を、 [J] [X] = 0 。 } L1 :; } もし([N] [N] == 0 ){ 宜昌 = 1 。 ANS [N] = 2.333 。 } 他{ ANS [n]は [n]を= [N + 1 ]。 } のための(I = N- 1、I> = 1 ; i--)であれば(!{ブック[i])と の和 = 0 。 にとって(J = I + 1、J <= N; J ++)合計=合計+ [I] [J] * ANS [J]。 ANS [I] =([I] [N + 1 ] -sum)/ [I] [I]。 } BOOL缶= 1 。 用(i = 1 ; iが<= N; iは++ ){ ダブル ansx = 0 。 用(J = 1 ; J <= N; J ++)ansx + =(ANS [J] * TA [I] [J])。 もし(ファブ(ansx-TA [i]が[N + 1 ])> EPS)缶= 0 。 } であれば(宜昌){ 場合(CAN)のprintf(" 0 ")。他のprintf(" -1 " ); リターン 0 ; } であれば(チェック()){ プット(" 0 " )。 リターン 0 ; } のための(I = 1 iが++; iが<= N ){ のprintf(" X%D = " 、I)。 もし(ファブ(ANS [I])<EPS)ANS [I] = 0.0 。 printf(" %.2lfする\ n " 、ANS [I])。 } }