博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 11542 乘积是平方数
阅读量:5806 次
发布时间:2019-06-18

本文共 1042 字,大约阅读时间需要 3 分钟。

题目链接:

这个题目也是2016年CCPC网赛上面的题目,当时我是不会做的,但是大牛们都知道这是一个原题,最后给一队过了,还是大牛们厉害,其实也不是很难。

 

题意:

给出n个正整数,从中选出1个或者多个,使得选出来的整数乘积是完全平方数,一共有多少种选法。

 

分析:

"不含大于500的素数因子"——每一个数的唯一分解式。

例如: {4,6,10,15} 

4x1 = 22 * 3* 50;

6x2 = 21 * 31 * 50;

10x3= 21 * 30 * 51;

15x4 = 20* 31 * 51;

要使得乘积为平方数,那么每个分向量的指数为偶数。

就得到了方程组:

x2 + x3 = 0(mod2);

x2 + x4 = 0(mod2);

x3 + x4 = 0(mod2);

解方程:

发现有x个自由变量答案就是 2x - 1个解(全部不要题意删除);

 

#include 
using namespace std;const int maxn = 500 + 10;const int maxp = 100;int vis[maxn];int prime[maxp];int gen_primes(int n){ int m = (int)sqrt(n+0.5); memset(vis,0,sizeof(vis)); //是素数为 0 for(int i=2; i<=m; i++) { if(!vis[i]) { for(int j=i*i; j<=n; j+=i) vis[j] = 1; } } int c = 0; for(int i=2; i<=n; i++) { if(!vis[i]) prime[c++] = i; } return c;}typedef int Matrix[maxn][maxn];Matrix A;//m 个 方程组,n 个变元int ranks(Matrix A,int m,int n){ int i=0,j=0,k,r,u; while(i
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6086933.html

你可能感兴趣的文章
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
设计模式之-工厂模式、构造函数模式
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>