冷静分析容易发现,我们只要能确定一个数的值,所有值也就可以确定了
确定一个数的值很容易,$a_ia_j=M_{i,j},a_ia_k=M_{i,k},a_ja_k=M_{j,k}$
然后就可以得到 $a_i=\sqrt {M_{i,j}*M_{j,k}/M_{j,k}}$ ,然后这一题就做完了
#include#include #include #include #include using namespace std;typedef long long ll;inline ll read(){ ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f;}const int N=1007;ll n,m[N][N],a[N];int main(){ n=read(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) m[i][j]=read(); a[1]=sqrt(1ll*m[1][2]*m[1][3]/m[2][3]); for(int i=2;i<=n;i++) a[i]=m[1][i]/a[1]; for(int i=1;i<=n;i++) printf("%lld ",a[i]); puts(""); return 0;}