hdu 5833 Zhu and 772002 异或方程组高斯消元
ccpc网赛卡住的一道题
蓝书上的原题 但是当时没看过蓝书
今天又找出来看看 其实也不是特别懂 但比以前是了解了一点了
主要还是要想到构造异或方程组 异或方程组的消元只需要xor就好搞了
数学真的是硬伤啊……
(链接:蓝书161页详细讲解 我也在看……
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#define cl(a,b) memset(a,b,sizeof(a))
#define debug(x) cerr<<#x<<"=="<<(x)<<endl
using namespace std;
typedef long long ll; const int maxn=3e2+;
const int maxx=2e3+;
const int mod=1e9+; int n,maxp,tol;
int prime[maxn];
int A[maxn][maxn]; ll powmod(ll a,ll x)
{
ll t=;
while(x)
{
if(x&) t=t*a%mod;
a=a*a%mod;
x>>=;
}
return t;
} void init()
{
bool notprime[maxx];
cl(notprime,false);
notprime[]=notprime[]=true;
for(int i=; i<maxx; i++)
{
if(!notprime[i])
{
if(i*i>maxx) continue;
for(int j=i*i; j<maxx; j+=i)
notprime[j]=true;
}
}
tol=;
for(int i=; i<maxx; i++)
if(!notprime[i]) prime[tol++]=i;
} ll Gauss(int m)
{
int i=,j=,r;
while(j<m&&i<n)
{
r=i;
for(int k=i; k<m; k++)
if(A[k][j]){r=k;break;}
if(A[r][j]){
if(r!=i) for(int k=; k<=n; k++) swap(A[r][k],A[i][k]);
for(int u=i+; u<m; u++) if(A[u][j])
for(int k=i; k<=n; k++) A[u][k]^=A[i][k];
i++;
}
j++;
}
return i;
} int main()
{
int T,cas=;
scanf("%d",&T);
init();
while(T--)
{
int maxp=;
ll x;
scanf("%d",&n);
memset(A,,sizeof(A));
for(int i=; i<n; i++)
{
scanf("%lld",&x);
for(int j=; j<tol; j++)
{
while(x%prime[j]==)
{
maxp=max(maxp,j);
x/=prime[j];
A[j][i]^=;
}
}
}
ll r=Gauss(maxp+);
ll tmp=n-r;
ll ans=powmod(,tmp)-;
printf("Case #%d:\n",cas++);
printf("%lld\n",ans);
}
return ;
} /* 3
4
4 6 10 15
3
3 3 4
3
2 2 2 */
hdu 5833 Zhu and 772002 异或方程组高斯消元的更多相关文章
- 【HDU 5833】Zhu and 772002(异或方程组高斯消元)
300个最大质因数小于2000的数,选若干个它们的乘积为完全平方数有多少种方案. 合法方案的每个数的质因数的个数的奇偶值异或起来为0. 比如12=2^2*3,对应的奇偶值为01(2的个数是偶数为0,3 ...
- 【HDU 5833】Zhu and 772002(异或方程组高斯消元讲解)
题目大意:给出n个数字a[],将a[]分解为质因子(保证分解所得的质因子不大于2000),任选一个或多个质因子,使其乘积为完全平方数.求其方法数. 学长学姐们比赛时做的,当时我一脸懵逼的不会搞……所以 ...
- 3364 Lanterns (异或方程组高斯消元)
基本思路.首先构造一个n*(m+1)的矩阵,同时标记一个行数row,row从零开始,然后找出每一列第一个非零的数,和第row行互换, 然后对row到n行,异或运算.最终的结果为2^(m-row) #i ...
- hdu 5833 Zhu and 772002 ccpc网络赛 高斯消元法
传送门:hdu 5833 Zhu and 772002 题意:给n个数,每个数的素数因子不大于2000,让你从其中选则大于等于1个数相乘之后的结果为完全平方数 思路: 小于等于2000的素数一共也只有 ...
- HDU 5833 Zhu and 772002
HDU 5833 Zhu and 772002 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- 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 Zhu and 772002 高斯消元
Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...
- HDU 2262 Where is the canteen 期望dp+高斯消元
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2262 Where is the canteen Time Limit: 10000/5000 MS ...
- 【HDU 3949】 XOR (线性基,高斯消元)
XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
随机推荐
- c#winform关闭窗口时触发的事件
用户关闭软件时,软件一般会给“是否确认关闭”的提示. 通常,我们把它写在FormClosing 事件中,如果确定关闭,就关闭:否则把FormClosingEventArgs 的 Cancel 属性设置 ...
- Windbg找出死锁
使用Windbg找出死锁,解决生产环境中运行的软件不响应请求的问题 前言 本文介绍本人的一次使用Windbg分析dump文件找出死锁的过程,并重点介绍如何确定线程所等待的锁及判断是否出现了死锁. 对于 ...
- SQLSERVER清空(Truncate)被外键引用的数据表
前言:我们知道SQLSERVER清空数据表有两种方式Delete和Truncate,当然两者的不同大家也都知道(不清楚的可以MSDN).不过这个错误“Cannot truncate table be ...
- iOS Web开发激活css的active伪类
最近在做一个资讯客户端,用到UIWebview展示一些网页内容,本来想做一个简单的按压效果,发现在css中设置active属性一直不管用. 查阅了一下资料,今天发现,要让css active伪类生效, ...
- 实践Scrum
http://blog.vsharing.com/agiledo/ [原创]敏捷开发实践-我们这样实践Scrum-续(81页) 我们团队实践Scrum,有一些做法和教训,希望和大家分享: 公司背景:通 ...
- Java 多线程系列
要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问. Java中的主要同步机制是关键字synchronized,它提供了一种独 ...
- Sublime中开发Ruby
Ruby:Sublime中开发Ruby需要注意的Encoding事项 目录 背景Sublime相关默认的文件存储编码:UTF8默认的输出控制台编码:UTF8修改默认的输出控制台编码Ruby相关默认的代 ...
- xml数据解析
xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...
- 漫画研发之十二:该听谁的? 部门经理 or 项目经理
- [置顶] IT老男人读《因为痛,所以叫青春》
最近偶然,从别人的书桌上看到这本书,其中有个关于时间的解释,很是让为成功焦虑的老男人受用. 因此,我喜欢将人生的80年跟一天中的24小时进行对照. 人生时钟的计算方法十分简单.24小时相当于144 ...