Codeforces 1220B. Multiplication Table
冷静分析容易发现,我们只要能确定一个数的值,所有值也就可以确定了
确定一个数的值很容易,$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<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> 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; }