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 异或方程组高斯消元的更多相关文章

  1. 【HDU 5833】Zhu and 772002(异或方程组高斯消元)

    300个最大质因数小于2000的数,选若干个它们的乘积为完全平方数有多少种方案. 合法方案的每个数的质因数的个数的奇偶值异或起来为0. 比如12=2^2*3,对应的奇偶值为01(2的个数是偶数为0,3 ...

  2. 【HDU 5833】Zhu and 772002(异或方程组高斯消元讲解)

    题目大意:给出n个数字a[],将a[]分解为质因子(保证分解所得的质因子不大于2000),任选一个或多个质因子,使其乘积为完全平方数.求其方法数. 学长学姐们比赛时做的,当时我一脸懵逼的不会搞……所以 ...

  3. 3364 Lanterns (异或方程组高斯消元)

    基本思路.首先构造一个n*(m+1)的矩阵,同时标记一个行数row,row从零开始,然后找出每一列第一个非零的数,和第row行互换, 然后对row到n行,异或运算.最终的结果为2^(m-row) #i ...

  4. hdu 5833 Zhu and 772002 ccpc网络赛 高斯消元法

    传送门:hdu 5833 Zhu and 772002 题意:给n个数,每个数的素数因子不大于2000,让你从其中选则大于等于1个数相乘之后的结果为完全平方数 思路: 小于等于2000的素数一共也只有 ...

  5. HDU 5833 Zhu and 772002

    HDU 5833 Zhu and 772002 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  6. HDU 5833 Zhu and 772002 (高斯消元)

    Zhu and 772002 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5833 Description Zhu and 772002 are b ...

  7. hdu 5833 Zhu and 772002 高斯消元

    Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...

  8. 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 ...

  9. 【HDU 3949】 XOR (线性基,高斯消元)

    XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

随机推荐

  1. C语言中的内存对齐

    最近看了好多,也编了好多C语言的浩强哥书后的题,总觉的很不爽,真的真的好怀念linux驱动的代码,好怀念那下划线,那结构体,虽然自己还很菜. 同时看了一遍陈正冲老师的C语言深度剖析,收益很多,又把唐老 ...

  2. 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  3. 使用shell+awk完成Hive查询结果格式化输出

    好久不写,一方面是工作原因,有些东西没发直接发,另外的也是习惯给丢了,内因所致.今天是个好日子,走起! btw,实际上这种格式化输出应该不只限于某一种需求,差不多是通用的. 需求: --基本的:当前H ...

  4. 利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)

    redis的list类型有个很好的特性,就是每次添加元素后会返回当前list的长度,利用这个特点,我们可以监控它的长度,比如我们的key是用户注册的IP地址,list中存放的是已经在此IP地址上注册的 ...

  5. Media Formatters媒体格式化器

    Media Formatters媒体格式化器 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/344 ...

  6. C++ 顺序容器 vector list deque 之比较

    在C++标准库中定义了三种顺序容器类型:vector,list和deque.所谓顺序容器就是根据位置来存储和访问元素,元素的排列次序与元素的值无关,而是由元素添加到容器的次序决定的. vector的底 ...

  7. [转]iOS: About diagnostic capabilities

    Source:http://support.apple.com/kb/HT6331 Each of these diagnostic capabilities requires the user to ...

  8. 1047找环环&1503整数探究

    1047就是判断一个数乘以他的位数1~n后是这个数转来转去的一个形式.主要就是大整数乘法 贴shi代码 #include<iostream> #include<string> ...

  9. Discuz! X2.5数据库字典(转)

    DROP TABLE IF EXISTS pre_common_admincp_cmenu; CREATE TABLE pre_common_admincp_cmenu ( `id` SMALLINT ...

  10. 使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)

    使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源) 先直接上程序界面,了解整体工作流程是什么样子的,求服务器进行挂机测试,需要固定IP,空间大概需要10G左右(主要是BT种子占用空间 ...