Uva 11542 Square

题目中说数组中的数的最大质因子不超过500,我们筛出≤500的质数,然后考虑对每个质数列一个方程组。。
然后这几乎就是高斯消元求解异或方程组的模板题了。。。。
注意答案是 2^(自由元数量)-1,因为空集不是答案的一部分。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#define ll long long
#define maxn 125
using namespace std;
int zs[505],t=0;
bool v[505]; inline void init(){
for(int i=2;i<=500;i++){
if(!v[i]) zs[++t]=i;
for(int j=1,u;j<=t&&(u=zs[j]*i)<=500;j++){
v[u]=1;
if(!(i%zs[j])) break;
}
} } int a[maxn][maxn];
int T,n,m;
ll now; inline void prework(int x){
for(int i=1;i<=t;i++) if(!(now%zs[i])){
int c=0;
while(!(now%zs[i])) now/=(ll)zs[i],c^=1;
a[i][x]=c;
}
} inline int solve(){
int i=1,j=1;
//当前处理到第i个方程,第j个变量
while(i<=t&&j<=n){
for(int k=i;k<=t;k++) if(a[k][j]){
if(k!=i) for(int l=j;l<=n;l++) swap(a[k][l],a[i][l]);
break;
} if(a[i][j]){
for(int k=i+1;k<=t;k++) if(a[k][j])
for(int l=j;l<=n;l++) a[k][l]^=a[i][l];
i++;
}
j++;
} return i-1;
} int main(){
init(); scanf("%d",&T);
while(T--){
memset(a,0,sizeof(a));
scanf("%d",&n); for(int i=1;i<=n;i++){
scanf("%lld",&now);
prework(i);
} int d=solve(); printf("%lld\n",((ll)1<<(ll)(n-d))-1ll);
} return 0;
}
Uva 11542 Square的更多相关文章
- UVA 11542 - Square(高斯消元)
UVA 11542 - Square 题目链接 题意:给定一些数字.保证这些数字质因子不会超过500,求这些数字中选出几个,乘积为全然平方数,问有几种选法 思路:对每一个数字分解成质因子后.发现假设要 ...
- xor方程组消元 UVA 11542 Square
题目传送门 题意:给n个数,选择一些数字乘积为平方数的选择方案数.训练指南题目. 分析:每一个数字分解质因数.比如4, 6, 10, 15,, , , , 令,表示选择第i个数字,那么,如果p是平方数 ...
- UVA 11542 Square ——线性基
[题目分析] 每个数没有超过500的因子.很容易想到把每一个数表示成一个二进制的数. (0代表该质数的次数为偶数,1代表是奇数) 然后问题转化成了选取一些二进制数,使他们的异或和为0. 高斯消元,2^ ...
- UVa 11542 Square (高斯消元)
题意:给定 n 个数,从中选出一个,或者是多个,使得选出的整数的乘积是完全平方数,求一共有多少种选法,整数的素因子不大于 500. 析:从题目素因子不超过 500,就知道要把每个数进行分解.因为结果要 ...
- UVA 11542 Square 高斯消元 异或方程组求解
题目链接:点击打开链接 白书的例题练练手. . . P161 #include <cstdio> #include <iostream> #include <algori ...
- UVa 11542 (高斯消元 异或方程组) Square
书上分析的太清楚,我都懒得写题解了.=_=|| #include <cstdio> #include <cstring> #include <cmath> #inc ...
- UVa 11461 - Square Numbers【数学,暴力】
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA 11461 - Square Numbers 数学水题
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 11461 - Square Numbers(水题)
题目链接 #include <cstdio> #include <cstring> #include <string> #include <cmath> ...
随机推荐
- Python 3基础教程5-while循环语句
本文开始介绍循环语句,和其他编程语言一样,Python中有while循环和for循环,这里介绍while循环. 语法: while 条件表达式为真: 做一些事情 实际生活中有很多这样的循环场景,这里举 ...
- 孤荷凌寒自学python第五十天第一次接触NoSql数据库_Firebase
孤荷凌寒自学python第五十天第一次接触NoSql数据库_Firebase (完整学习过程屏幕记录视频地址在文末) 之前对关系型数据库的学习告一段落,虽然能力所限没有能够完全完成理想中的所有数据库操 ...
- 孤荷凌寒自学python第十天序列之字符串的常用方法
孤荷凌寒自学python第十天序列之字符串的常用方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字符串操作方法非常丰富,原生支持字符串的多种操作: 1 查找子字符串 str ...
- 一个符号冲突导致的core分析
问题描述: 修改跟踪程序(Trace)支持IPV6时,发现程序启动后正常,但是客户端一旦下发查询条件进行跟踪,Trace程序就直接coredump! (gdb) bt # 0x00007f7dab9e ...
- PHP如何实现第三方分享
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java TCP通信概念及实例
TCP/UDP 协议 通俗解释: TCP协议和UDP协议的区别类似于电话系统和邮政系统. <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听. <2>UD ...
- webpack 基础
1.安装: npm install --save-dev webpack npm install --save-dev webpack@<version> 如果是webpa ...
- C#学习笔记----静态字段和静态方法
1.使用关键字 static 修饰的字段或方法成为静态字段和静态方法,如 public static int num = 1;2.静态字段属于类,并为类所用.而非静态字段属于对象,只能被特定的对象专有 ...
- 积累: .net里有个线程安全的int+1类
Interlocked.Increment(ref id);
- 用树莓派做3G无线路由器
第一篇博客献给我做了很长时间的课程设计,也就是题目所说的3G无线路由器.本次开发所使用的开发平台为树莓派开发板,下面进入正题..... 目标:将树莓派设置成为一个3G无线路由器,通过华为的E261拨号 ...