题解 | #小红的行列式构造#

毕竟是构造题,可以考虑将原本要构造的9个数中的部分数特例化。

  • 例如
1 a 1
b 1 c
1 d 1

或者可以更简单

1 1 1
1 a 1
1 1 b

我们以第一个为例计算其行列式:
det = 1 + ac + bd - (1 + ab + cd) = ac + bd - ab - cd —> (a - d) (c -b ) = x
继而可以进一步特殊化,即令a-d=1,c-b=x
观察范围可得x∈[-100,100],故为了让构造出来的数不为0,我们可以让最后的c和b都加上一个大于100的数(这里我为了方便取200),a和d可以任意设置(只要不为0就可以)。
具体代码如下:

    a[1][1]=1,a[1][3]=1,a[2][2]=1,a[3][1]=1,a[3][3]=1;
        a[1][2]=100,a[3][2]=99,a[2][1]=200,a[2][3]=x+200;
        for(int i=1;i<=3;i++){
            for(int j=1;j<=3;j++){
                cout<<a[i][j]<<' ';
            }
            cout<<'\n';
        }