http://acm.hdu.edu.cn/showproblem.php?pid=5833

问题概述:输入n个数,可以从当中选出一些数,使得这些数乘积为一个完全平方数,求出总共有多少种不同选法

(不能不选)(http://acm.hdu.edu.cn/showproblem.php?pid=5833)

输入样例:                                     对应输出:

2                                                     Case #1:

3                                                     3

3 3 4                                               Case #2:

3                                                     3

2 2 2

高斯消元:

①对于n行m列增广矩阵,初始化p==q==1

②遍历第p行第q列及下面的所有元素,找到一个非0元,如果找到执行步骤③,没有找到q++,继续执行步骤②,直

到q超过m,执行步骤④

③将这一行和第p行交换,交换后再遍历p行q列下面的每一个元素,如果当前元值不为0,则通过行变换将这行所有

元素减去p行元素的一定比例,使得当前元为0,遍历完毕,p++,q++,继续执行步骤②

④矩阵已经化为阶梯形矩阵,矩阵的秩就是p-1, 方程组不同解的个数就是2^(n-p+1)

此题题解:

定理:每个平方数的质因子都有偶数个,而若干个数相乘就是将它们的质因数加在一起

设一个矩阵,矩阵中的元素a[i][j]==0表示第i个元素可以分解出偶数个第j个质因数,a[i][j]==1表示第i个元素可以分解

出奇数个第j个质因数,而这题可以将这个矩阵看做成一个方程组的系数矩阵,且这个方程组每一个方程都等于0,

又因为这道题不允许一个数不选,所以矩阵的全0解非法!最后的答案便是方程组解的个数-1

附录:线性方程组解的判断:

设矩阵A为系数矩阵,列向量b为方程对应的值,矩阵B=(A,b)(增广矩阵),n为未知数的个数(列数)

则有:①R(A)<R(B)      ------      无解

②R(A)==R(B)==n      ------      有一个解

③R(A)==R(B)<n      ------      有多个解

PS:当b为0向量时,方程组为线性齐次方程组,不可能无解(像这道题就是个01线性齐次方程组)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define mod 1000000007
int pri[2100], a[2100] = {1,1};
int solve(int A[][305], int n, int m);
int main(void)
{int T, i, j, k, n, mxj, cas, ans, ret, A[305][305];long long x;k = 0;for(i=2;i<=2000;i++){if(a[i]==1)continue;pri[++k] = i;for(j=i*i;j<=2000;j+=i)a[j] = 1;}scanf("%d", &T);cas = 1;while(T--){mxj = 0;scanf("%d", &n);memset(A, 0, sizeof(A));for(i=1;i<=n;i++){scanf("%lld", &x);for(j=1;j<=k;j++){while(x%pri[j]==0){mxj = max(mxj, j);x /= pri[j];A[j][i] ^= 1;}}}ret = solve(A, mxj, n);ans = 1;for(i=1;i<=n-ret;i++)ans = (ans*2)%mod;printf("Case #%d:\n%d\n", cas++, ans-1);}return 0;
}int solve(int A[][305], int n, int m)
{int i, j, p, r, q;p = q = 1;while(p<=n && q<=m){r = -1;for(i=p;i<=n;i++){if(A[i][q])r = i;}if(r==-1){q++;continue;}for(i=1;i<=m;i++)swap(A[r][i], A[p][i]);for(i=p+1;i<=n;i++){if(A[i][q]){for(j=q;j<=m;j++)A[i][j] ^= A[p][j];}}p++, q++;}return p-1;
}

2016CCPC网选 1002:Zhu and 772002(求解矩阵秩)相关推荐

  1. 城际网约车订单分配问题及其求解算法

    城际网约车订单分配问题及其求解算法 问题的定义 数学建模 用于城际网约出行的智能订单分配算法 智能订单分配算法 基于时间序列和距离信息的启发式方法 基于邻域操作的局部搜索 动态订单分配机制 自适应订单 ...

  2. 使用MTL库求解矩阵特征值和特征向量

    关于矩阵的特征值和特征向量求解,大部分的数学运算库都进行了提供,下面是使用MTL库的接口进行封装. #include <mtl/matrix.h> #include <mtl/mtl ...

  3. 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量

    利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...

  4. 初等变换法求解λ矩阵的不变因子

    初等变换法求解λ矩阵的不变因子 当然也可以用行列式因子法求解

  5. 7.1 求解矩阵的逆

    求解矩阵的逆 使用线性系统 求解 矩阵的逆 什么是矩阵的逆 ==> 矩阵中 AB=BA=I ,则称B是A的逆矩阵,记作 B = A的负一次方 只有方阵才有逆矩阵 假设矩阵A有逆矩阵,如何求解? ...

  6. scipy求解矩阵微分方程

    形如 X ′ = A X + b X'=AX+b X′=AX+b的矩阵微分方程目前在scipy中是没有接口直接处理的,需要自己手动转换一下格式,但对应这种格式MATLAB的ode求解器是支持直接求解的 ...

  7. 利用QR算法求解矩阵的特征值和特征向量

    利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...

  8. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...

    由于自己科研水平较低,记录的各种体会更多的是给自己做个小结,错误之处,欢迎大家指正. 使用MATLAB求解偏微分方程或者方程组,大致有三类方法.第一种是使用MATLAB中的PDE Toolbox,PD ...

  9. 2014 网选 上海赛区 hdu 5047 Sawtooth

    题意:求n个'M'型的折线将一个平面分成的最多的面数! 思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1 也就是f(n) = (n*n + n +2)/2 对于一个 ...

最新文章

  1. springBean生命周期----来自spring实战总结
  2. 西安思源中学2021高考成绩查询入口,西安思源中学隆重举行2020-2021学年第二学期开学典礼...
  3. java类如何enum_java – 如何模拟ENUM类中的方法?
  4. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
  5. c语言函数用指针传递参数问题
  6. 第02课:简单好用的中文分词利器 jieba 和 HanLP
  7. 全国英语计算机9月统考2019,2019年9月网络教育统考《计算机应用基础》模拟题6...
  8. C语言: ---windows下VS Debug调试
  9. 倾斜摄影测量无人机炸机的八大原因及“炸机”预防措施
  10. pytorch学习率衰减
  11. 线性代数第九版中文版pdf_线性代数第九版StevenJ Leon.pdf
  12. xampp使用教程方法免费分享
  13. 12款免商用中文字体,有谁不爱!(附下载)
  14. 阿里网盘“该文件类型暂时不支持分享”解决方案
  15. R语言read.xlsx( )函数报错 LoadLibrary failure: %1 不是有效的 Win32 应用程序
  16. .NET/C# — EXCEL文件内容添加到数据库中
  17. c++打印心形_C语言控制台打印3D爱心图案
  18. echarts_series总结
  19. 记录windows上的VSCODE 远程到linux编译代码机器上的一些问题
  20. STC15系列单片机外设参考资料

热门文章

  1. python办公自动化案例-用python进行办公自动化都需要学习什么知识呢?
  2. python语言-Python Insider
  3. 语音识别看似神通广大 但它真的听得懂方言么
  4. 数据库与hadoop_OLTP,MPP和Hadoop
  5. 【java笔记】Properties类
  6. 【动态规划】状压dp:蓝桥2020补给(旅行商问题)
  7. PYTHON笔记 面向对象程序设计
  8. matlab中 mcc、mbuild和mex命令详解
  9. python爬取天气预报并发送短信_Python3爬虫教程之利用Python实现发送天气预报邮件...
  10. linux实现开机自启动脚本