ccpc网赛卡住的一道题

蓝书上的原题 但是当时没看过蓝书

今天又找出来看看 其实也不是特别懂 但比以前是了解了一点了

主要还是要想到构造异或方程组 异或方程组的消元只需要xor就好搞了

数学真的是硬伤啊……

(链接:蓝书161页详细讲解 我也在看……

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #define cl(a,b) memset(a,b,sizeof(a))
  8. #define debug(x) cerr<<#x<<"=="<<(x)<<endl
  9. using namespace std;
  10. typedef long long ll;
  11.  
  12. const int maxn=3e2+;
  13. const int maxx=2e3+;
  14. const int mod=1e9+;
  15.  
  16. int n,maxp,tol;
  17. int prime[maxn];
  18. int A[maxn][maxn];
  19.  
  20. ll powmod(ll a,ll x)
  21. {
  22. ll t=;
  23. while(x)
  24. {
  25. if(x&) t=t*a%mod;
  26. a=a*a%mod;
  27. x>>=;
  28. }
  29. return t;
  30. }
  31.  
  32. void init()
  33. {
  34. bool notprime[maxx];
  35. cl(notprime,false);
  36. notprime[]=notprime[]=true;
  37. for(int i=; i<maxx; i++)
  38. {
  39. if(!notprime[i])
  40. {
  41. if(i*i>maxx) continue;
  42. for(int j=i*i; j<maxx; j+=i)
  43. notprime[j]=true;
  44. }
  45. }
  46. tol=;
  47. for(int i=; i<maxx; i++)
  48. if(!notprime[i]) prime[tol++]=i;
  49. }
  50.  
  51. ll Gauss(int m)
  52. {
  53. int i=,j=,r;
  54. while(j<m&&i<n)
  55. {
  56. r=i;
  57. for(int k=i; k<m; k++)
  58. if(A[k][j]){r=k;break;}
  59. if(A[r][j]){
  60. if(r!=i) for(int k=; k<=n; k++) swap(A[r][k],A[i][k]);
  61. for(int u=i+; u<m; u++) if(A[u][j])
  62. for(int k=i; k<=n; k++) A[u][k]^=A[i][k];
  63. i++;
  64. }
  65. j++;
  66. }
  67. return i;
  68. }
  69.  
  70. int main()
  71. {
  72. int T,cas=;
  73. scanf("%d",&T);
  74. init();
  75. while(T--)
  76. {
  77. int maxp=;
  78. ll x;
  79. scanf("%d",&n);
  80. memset(A,,sizeof(A));
  81. for(int i=; i<n; i++)
  82. {
  83. scanf("%lld",&x);
  84. for(int j=; j<tol; j++)
  85. {
  86. while(x%prime[j]==)
  87. {
  88. maxp=max(maxp,j);
  89. x/=prime[j];
  90. A[j][i]^=;
  91. }
  92. }
  93. }
  94. ll r=Gauss(maxp+);
  95. ll tmp=n-r;
  96. ll ans=powmod(,tmp)-;
  97. printf("Case #%d:\n",cas++);
  98. printf("%lld\n",ans);
  99. }
  100. return ;
  101. }
  102.  
  103. /*
  104.  
  105. 3
  106. 4
  107. 4 6 10 15
  108. 3
  109. 3 3 4
  110. 3
  111. 2 2 2
  112.  
  113. */

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. WCF入门教程(图文)VS2012

    WCF入门教程(图文)VS2012 上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和 ...

  2. 推荐系列:最小与最大[DP+余式定理]

    最小与最大 [问题描述] 做过了乘积最大这道题,相信这道题也难不倒你. 已知一个数串,可以在适当的位置加入乘号(设加了k个,当然也可不加,即分成k+1个部分),设这k+1个部分的乘积(如果k=0,则乘 ...

  3. Bootstrap3入门

    Bootstrap3学习第一轮(入门) 前言 在上一节中http://www.cnblogs.com/aehyok/p/3381651.html主要是简单的介绍了一下Bootstrap.从http:/ ...

  4. C语言面试问答5

    12个滑稽的C语言面试问答——<12个有趣的C语言问答>评析(5) 前文链接:http://www.cnblogs.com/pmer/archive/2013/09/17/3327262. ...

  5. sql 通过存储过程和自定义类型批量新增数据

    1,建立存储过程 create PROCEDURE [dbo].[p_Company_Insert] @CompanyCollection [CompanyTableType] READONLY AS ...

  6. 护眼纯黑色VS2012配色方案

    这些天由于公司项目比较忙,所以天天盯着电脑8小时,而且我的开发工具VS2012是白色背景的所以每天下班都搞的眼睛巨疼. 今天在网上找到一个很好的配色方案,所以有同样烦恼的童鞋们可以试试哦! 展示下效果 ...

  7. 基本Guava工具

      使用Joiner类 将任意字符串通过分隔符进行连接到一起是大多程序员经常做的事情.他们经常使用array,list,iterable并且循环变量将每一个临时变量添加到StringBuilder当中 ...

  8. Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext

    Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext 背景 之前写过两篇文章介绍模型的合法性: DDD:关于模型的合法性,Entity.IsValid( ...

  9. 构建一个真实的应用电子商务SportsStore9

    使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(九) 实在不好意思,好久没有更新了,我不想找些客观原因来解释,只想请大家见谅!现在我们继续我们的项目,客户 ...

  10. 构建一个真实的应用电子商务SportsStore(十一)

    构建一个真实的应用电子商务SportsStore(十一) 我们的项目已经进入了非常好的良性循环,项目中涵盖了多数现在的主流开源框架的使用.就Ninject而言,我们的运用是非常的成功,没有任何一点多余 ...