Zhu and 772002---hdu5833(高斯消元解求异或方程组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5833
题意:给n个数,选择一些数字乘积为平方数的选择方案数。
分析:每一个数字分解质因数。比如4, 6, 10, 15,,
,
,
, 令
,
表示选择第i个数字,那么
,如果p是平方数,那么每个质因数上的指数为偶数,x1系数为2已经是偶数不考虑。可以转换为异或为0判断偶数,即奇数置为1,偶数置为0,然后n个数字m个质因数的增广矩阵消元看有几个自由变量(取0或1无所谓),答案是2^r - 1(全部都不取方案不算)
线性方程组的自由变量个数了(即方程个数 - 增广矩阵的秩)。
比如:n=2个数 8 =2^3 、 9 = 3^2
有两个素因子2和3,可列出两个方程:
3*X1 + 0*X2 = 0 (mod2) 等价于 : X1 +0*X2 = 0
0*X1 + 2*X2 = 0 (mod2) 0*X1 + 0*X2 = 0
其中只有1个有效方程,即秩为1。
这代表什么意思呢? X1 = 0 , 表示8一定不能选 , X2不确定,表示9可以选择也可以不选。
因此答案为 2^1 - 1 = 1 (因为不允许一个都不选,所以减一)
网选原题的并不只这一题,没做过的只能默默吃亏了;
相对应的UVA的11542:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2537同时也是大白书上的例题;
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
#define N 2000
#define met(a, b) memset(a, b, sizeof(a))
#define mod 1000000007
typedef long long LL; int f[N*], p[N*], Matrix[N][N]; int Prime()
{
int cnt = ;
for(int i=; i<N; i++)
{
if(!p[i])f[cnt++] = i;
for(int j=i; j<N; j+=i)
p[j] = ;
}
return cnt;
} int gauss(int m, int n)
{
int i = , j = ;
while(i<m && j<n)
{
int row = i;
for(int k=i+; k<m; k++)
{
if(Matrix[k][j])
{
row = k;
break;
}
}
if(Matrix[row][j])
{
if(row != i)
{
for(int k=; k<=n; k++)
swap(Matrix[i][k], Matrix[row][k]);
}
for(int p=i+; p<m; p++)
{
if(Matrix[p][j])
{
for(int q=i; q<=n; q++)
Matrix[p][q] ^= Matrix[i][q];
}
}
i++;
}
j++;
}
return i;
} int main()
{
int PrimeNum = Prime(); int n, T, t = ; scanf("%d", &T);
while(T--)
{
met(Matrix, );
scanf("%d", &n);
int m = ;
for(int i=; i<n; i++)
{
LL num;
scanf("%I64d", &num);
for(int j=; j<PrimeNum; j++)
{
if(num%f[j] == )
{
m = max(m, j);
while(num%f[j] == )
{
num/=f[j];
Matrix[j][i] ^= ;
}
}
}
}
int ret = gauss(m+, n); LL ans = ;
for(int i=; i<=n-ret; i++)
{
ans = ans*%mod;
}
ans = (ans+mod-) % mod;
printf("Case #%d:\n%I64d\n", t++, ans);
}
return ;
}
Zhu and 772002---hdu5833(高斯消元解求异或方程组)的更多相关文章
- bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...
- 【BZOJ】2466: [中山市选2009]树 高斯消元解异或方程组
[题意]给定一棵树的灯,按一次x改变与x距离<=1的点的状态,求全0到全1的最少次数.n<=100. [算法]高斯消元解异或方程组 [题解]设f[i]=0/1表示是否按第i个点的按钮,根据 ...
- HDU 5833 Zhu and 772002 (高斯消元)
Zhu and 772002 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5833 Description Zhu and 772002 are b ...
- HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)
网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...
- poj2947(高斯消元解同模方程组)
题目链接:http://poj.org/problem?id=2947 题意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下: p start enda1, a2......ap (1< ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10835 Accepted: 6 ...
- HDU 5833 Zhu and 772002 (数论+高斯消元)
题目链接 题意:给定n个数,这n个数的素因子值不超过2000,从中取任意个数使其乘积为完全平方数,问有多少种取法. 题解:开始用素筛枚举写了半天TLE了,后来队友说高斯消元才想起来,果断用模板.赛后又 ...
- HDU 5833 Zhu and 772002(高斯消元)
题意:给n个数,从n个数中抽取x(x>=1)个数,这x个数相乘为完全平方数,求一共有多少种取法,结果模1000000007. 思路:每个数可以拆成素数相乘的形式,例如: x1 2=2^1 * 3 ...
- [置顶] hdu 4418 高斯消元解方程求期望
题意: 一个人在一条线段来回走(遇到线段端点就转变方向),现在他从起点出发,并有一个初始方向, 每次都可以走1, 2, 3 ..... m步,都有对应着一个概率.问你他走到终点的概率 思路: 方向问 ...
随机推荐
- Linux应急响应(三):挖矿病毒
0x00 前言 随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式.新的挖矿攻击展现出了类似蠕虫的行为,并结合了高级攻击技术,以增加对目标服务器感染 ...
- U3D功能脚本备忘
编译器属性 属性 介绍 用例 AddComponentMenu 在Component菜单中添加新的菜单项 [AddComponentMenu("Duan/Script/TestScript& ...
- WP8.1学习系列(第二十三章)——到控件的数据绑定
在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...
- 七、K3 WISE 开发插件《Update字段级更新触发器 - BOS单审核后反写源单》
审核成功触发,是一个比较典型的场景.需要用到update触发器,跟踪到审核状态的变化. 引用的源码<采购检验单审核后反写收料通知单>,其中采购检验单是BOS自定义单据. if (objec ...
- MAC升级node及npm
清除node.js的cache: sudo npm cache clean -f 安装 n 工具,这个工具是专门用来管理node.js版本的,别怀疑这个工具的名字,是他是他就是他,他的名字就是 &qu ...
- [Noi2016]区间[离散化+线段树维护+决策单调性]
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 621 Solved: 329[Submit][Status][D ...
- 【CF687D】Dividing Kingdom II 线段树+并查集
[CF687D]Dividing Kingdom II 题意:给你一张n个点m条边的无向图,边有边权$w_i$.有q个询问,每次给出l r,问你:如果只保留编号在[l,r]中的边,你需要将所有点分成两 ...
- android极光杀掉程序收不到通知
http://docs.jpush.io/guideline/faq/#android 第三方系统收不到推送的消息 由于第三方 ROM 的管理软件需要用户手动操作 小米[MIUI] 自启动管理:需要把 ...
- Unity3D笔记十七 Unity3D生命周期
一个游戏组件的脚本有一个生命周期——一开始实例化,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见 本文主要讨论常见脚本的的生命周期 ...
- [转]Android中attr自定义标签详解
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:wen= ...