P5390 [Cnoi2019]数学作业
求子集异或和的和
拆成2进制,假设有x个数这一位为1,剩下n-x个数对答案没有贡献,对于这一位而言,对答案的贡献就是,x个数选奇数个数的方案数*2^(n-x).
由二项式定理,(1-1)^x=sigema(0,x) (-1)^i*(x,i)=0
选奇数个和选偶数个方案是相同的,总共是2^x,这样就是2^(x-1).
所以这一位的答案为:2^(x-1) * 2^(n-x)=2^(n-1)
所以对于所以所有位而言,总的答案就是所有数或起来*2^(n-1)

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <queue>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <cstring>
  7. #define P 998244353
  8. #define N 3000010
  9. #define p(a) putchar(a)
  10. #define For(i,a,b) for(long long i=a;i<=b;++i)
  11. //by war
  12. //2019.8.19
  13. using namespace std;
  14. long long T,n,a[N],ans;
  15. void in(long long &x){
  16. long long y=;char c=getchar();x=;
  17. while(c<''||c>''){if(c=='-')y=-;c=getchar();}
  18. while(c<=''&&c>=''){ x=(x<<)+(x<<)+c-'';c=getchar();}
  19. x*=y;
  20. }
  21. void o(long long x){
  22. if(x<){p('-');x=-x;}
  23. if(x>)o(x/);
  24. p(x%+'');
  25. }
  26. long long ksm(long long a,long long b){
  27. long long r=;
  28. while(b>){
  29. if(b&)
  30. r=r*a%P;
  31. a=a*a%P;
  32. b>>=;
  33. }
  34. return r;
  35. }
  36. signed main(){
  37. in(T);
  38. while(T--){
  39. in(n);
  40. ans=;
  41. For(i,,n){
  42. in(a[i]);
  43. ans|=a[i];
  44. }
  45. o(ans*ksm(,n-)%P);p('\n');
  46. }
  47. return ;
  48. }

P5390 [Cnoi2019]数学作业的更多相关文章

  1. 【洛谷5390】[Cnoi2019] 数学作业(位运算)

    点此看题面 大致题意: 给你一个集合,求所有子集异或和之和. 大致思路 首先,我们很容易想到去对二进制下每一位分别讨论. 枚举当前位,并设共有\(x\)个数当前位上为\(1\),则有\((n-x)\) ...

  2. LuoguP5390 [Cnoi2019]数学作业(数论)

    转进制,然后发现贡献只有\(1_{(2)}\),取奇数个的子集方案是\(2^{n-1}\) #include <iostream> #include <cstdio> #inc ...

  3. BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘

    2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1564 Solved: 910 [Submit][Statu ...

  4. bzoj2326: [HNOI2011]数学作业

    矩阵快速幂,分1-9,10-99...看黄学长的代码理解...然而他直接把答案保存在最后一行(没有说明...好吧应该是我智障这都不知道... #include<cstdio> #inclu ...

  5. BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )

    BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...

  6. CJOJ 1331 【HNOI2011】数学作业 / Luogu 3216 【HNOI2011】数学作业 / HYSBZ 2326 数学作业(递推,矩阵)

    CJOJ 1331 [HNOI2011]数学作业 / Luogu 3216 [HNOI2011]数学作业 / HYSBZ 2326 数学作业(递推,矩阵) Description 小 C 数学成绩优异 ...

  7. [luogu P3216] [HNOI2011]数学作业

    [luogu P3216] [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 ...

  8. P3216 [HNOI2011]数学作业 (矩阵快速幂)

    P3216 [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 NN 和 MM ,要求计算 Concatenate (1 .. N ...

  9. BZOJ 2742: [HEOI2012]Akai的数学作业

    2742: [HEOI2012]Akai的数学作业 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 535  Solved: 226[Submit][S ...

随机推荐

  1. HTML常见问题

    一.外边距,margin: 垂直外边距的重叠:在网页中相邻的垂直方向的外边距会发生外边距的重叠 所谓的外边距重叠指兄弟元素之间的相邻外边距会取最大值而不是取和. .box1{margin-bottom ...

  2. 2019-7-15-WPF-测试触摸设备发送触摸按下和抬起不成对

    title author date CreateTime categories WPF 测试触摸设备发送触摸按下和抬起不成对 lindexi 2019-7-15 9:3:51 +0800 2019-0 ...

  3. UNLISTEN - 停止监听通知信息

    SYNOPSIS UNLISTEN { name | * } DESCRIPTION 描述 UNLISTEN 用于删除一个现有的已注册的 NOTIFY 事件. UNLISTEN 取消当前 Postgr ...

  4. C#中反射的基础基础基础

    class Program { static void Main(string[] args) { Type t = typeof(Student);//typeof(类) 取类的类型 并且存储在Ty ...

  5. 每天进步一点点-Tesseract 文字识别

    Tesseract 文字识别 是github上的开源文字识别软件 下载与安装 https://github.com/tesseract-ocr/tesseract/wiki 下载 https://gi ...

  6. Batch - %~dp0 modifiers

    %~dp0 简易解释 The variable %0 in a batch script is set to the name of the executing batch file. The ~dp ...

  7. 微信小程序布局篇

    刚刚接触小程序,小程序与HTML5有一定的差别,小程序就几个标签,而HTML5一大堆标签,还不断更新,但是新增标签功能强大.做一下微信小程序的布局练练手.感觉还是挺不错的,也封装了很多东西功能出来,与 ...

  8. Struts功能详解——ActionForm

    ActionForm ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的.因此应保证ActionForm的参数,与表单域的名字相同.     ActionForm ...

  9. 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)

    0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...

  10. NX二次开发-UFUN创建基准平面UF_MODL_create_plane

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建基准平面 ] = {0.0, 0.0, ...