打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
清北NOIP训练营内部试题解析!

解析在代码后面

#include <algorithm>

#include <cstdio>

#include <cstdlib>

#include <iostream>

#include <cmath>

using namespace std;

int gcd(int a,int b) { return !b ? a : gcd(b,a%b); }

bool solve() 

{

    int n,m,x,y;  

    scanf('%d%d',&n,&m);

    x=0;

    for (int i=1;i<=n;++i) 

    {

        scanf('%d',&y);

        x=gcd(x,abs(y));

    }

    if (n==1) return y==m;

    if (!x) return !m;

    return !(abs(m)%x);

}

int main() 

{

    freopen('det.in','r',stdin);

    freopen('det.out','w',stdout);

    int t;

    scanf('%d', &t);

    while(t--)

        if (solve()) printf('Y\n');

        else printf('N\n');

}

解析:

令g=gcd(X11,X12,X13……)

则行列式可能为D的充要条件为g|D

1、g|D为必要条件:

     由定义来算行列式的时候,每一项都要从第一行里取一个数,所以g|D

2、g|D为充分条件:

    首先可以通过矩阵的初等变换,将矩阵X消成对角矩阵

  其中,X11* X22 * X33* X44=D

  上述矩阵等价于

  

 把D拆为g*D/g

 还原到矩阵中

  

    X22=

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
多记记吧、、、
古典密码之仿射密码
菜鸟学C_猜数字
c语言练习实例04
算法思想题
113道C语言题目
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服