1254.异或求和
Time Limit: 1000 MS         Memory Limit: 65536 K
Total Submissions: 52 (19 users)         Accepted: 13 (7 users)

Description

给你2个区间[A,B]和[C,D],现在只要求你求出区间[A,B]和[C,D]内任意2个整数异或后的和,因为答案可能会很大,你只需将结果%mod即可。

For(i:A→B)
      For(j:C→D)
           Sum += (i^j);

Input

输入第一行为T(T<=15),表示测试的数据组数,第2行到T+1行,每行5个数 字,分别为A,B,C,D,mod(1<=A,B,C,D<2^31,A<=B,C<=D,1<=mod& lt;=1,000,000,007),即为上述的数值。

Output

输出有T行,每行有一个数字,代表题述的答案(即Sum % mod)。

Sample Input

3
5 11 9 12 43
9 12 5 11 83
1 1 2 2 3

Sample Output

18
24
0

//这题是我无意间看到的、不会做,然后也没找到题解,就把题目发到 ACMDIY群面//然后晚上群里一位上海交大的童鞋给了我思路//就是把每个数看成二进制数 求区间里面 第k位1有几个比如 区间 【1,8】 那么 区间里面第一位是1的有4个 第二位 是1的4个 第3位是1个是4个 第4位是1的有1个(只要把这8个数写成二进制,就可以看出来)当时我也想过这样、问题是我求不来区间里面这些数中有几个第k位是1然后他告诉我 符合 x mod 2^k >=2^(k-1) 的 x 第k位就是1这样只要求出 x某个范围 ,其它就是它的等价类了

这样就可以很快求出 区间【1,N】里面 第k位是1个数 (1<=k<=31)那么区间【A,B】里面第k位是1的个数就有了然后 就是怎么求和了

求和比较简单 就是 :(区间【A,B】第k位为1的个数乘以区间【C,D】第k位为0的个数+区间【A,B】第k位为0的个数乘以区间【C,D】第k位为1的个数)*2^(k-1)

#include <iostream>
#include <map>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
#define __int64 long long
struct node
{__int64 rc[32][2];
};
void get1(__int64 n,node *R)
{int i;__int64 t=4,p=2;R->rc[1][1]=n/2;if(n%2) R->rc[1][1]++;for(i=2;p<=n;t=(t<<1)){R->rc[i][1]=(n/t)*(t-p);if(n%t>=p)   R->rc[i][1]+=(n%t-p+1);i++;p=(p<<1);}}
int main()
{node a,b,c,d;int A,B,C,D;int Mod,T;scanf("%d",&T);while(T--){scanf("%d %d %d %d %d",&A,&B,&C,&D,&Mod);memset(a.rc,0,sizeof(a.rc));memset(b.rc,0,sizeof(b.rc));memset(c.rc,0,sizeof(c.rc));memset(d.rc,0,sizeof(d.rc));get1(A-1,&a);get1(B,&b);int i;for(i=1;i<=31;i++)a.rc[i][1]=b.rc[i][1]-a.rc[i][1];__int64 len=(B-A+1);for(i=1;i<=31;i++)a.rc[i][0]=len-a.rc[i][1];get1(C-1,&c);get1(D,&d);for(i=1;i<=31;i++)c.rc[i][1]=d.rc[i][1]-c.rc[i][1];len=(D-C+1);for(i=1;i<=31;i++)c.rc[i][0]=len-c.rc[i][1];__int64 sum=0,m=1;for(i=1;i<=31;i++){sum=(sum+(m<<(i-1))%Mod*(a.rc[i][0]%Mod*c.rc[i][1]%Mod+a.rc[i][1]%Mod*c.rc[i][0]%Mod)%Mod)%Mod;}Mod=(int)sum;printf("%d\n",Mod);}return 0;
}

转载于:https://www.cnblogs.com/372465774y/archive/2012/10/22/2734012.html

xmu 1254.异或求和相关推荐

  1. 个位数不含4用计算机表示,计算机组成原理

    1.真值和机器数的关系是什么? 答:在计算机内部用二进制编码表示的数称为机器数,而机器数真正的值(即原来带有正负号的数)称为机器数的真值. 2.什么是编码? 答:用少量简单的基本符号,对大量复杂多样的 ...

  2. 直接序列扩频通信系统

    代码下载:https://download.csdn.net/download/xvrixingkong/10968192 一.系统功能描述: 实现如下图所示的直接序列扩频通信系统. 信源--不断发送 ...

  3. 原码/补码的加减运算and溢出判断

    小数点的处理: 任意一个二进制数S都可以表示为 研究小数点就要研究阶码E的取值: 若E=0,则表示纯小数--代表定点小数: 例0.1111表示+0.1111,1.1111表示-0.1111. 若E=n ...

  4. Bzoj3687简单题(bitset)

    题意 给定一个含nnn(n<1000n<1000n<1000)个正整数(Σa\Sigma{a}Σa≤2e6≤2e6≤2e6)的集合,求其子集和的异或和. 思路 枚举子集显然是会超时的 ...

  5. 浮点数的加减运算(阶码、尾数)

    浮点数尾数运算  < ---- >  原码加/减运算 原码:+|x|  或者  -|x|      (正数=0+|x|    负数的=1+|x| ) 符号位和数值部分:分开处理 仅对[数值 ...

  6. 计算机组成原理实验运动码表,计算机组成原理

    1.真值和机器数的关系是什么? 答:在计算机内部用二进制编码表示的数称为机器数,而机器数真正的值(即原来带有正负号的数)称为机器数的真值. 2.什么是编码? 答:用少量简单的基本符号,对大量复杂多样的 ...

  7. 安全多方计算之GMW协议

    安全多方计算之GMW协议 一.背景 论文原文<How to play any mental game>.作者:Micali S, Goldreich O, Wigderson A.  发表 ...

  8. 找工作要复习的那些点

    2021年离职计划:30岁之前,还是期望在大厂工作,期望薪资是50万/年.涨幅在30%,工作地点在杭州/上海 时间 动作 2021:02:01 2021:02:01~~2021:02:20 todo: ...

  9. 【密码学基础】08 随机位生成和流密码

    随机位生成和流密码 1. 随机位生成 1.1 伪随机数 1.1.1 伪随机数生成的原理 1.1.2 伪随机数生成 1.1.2.1 线性同余生成器 1.1.2.2 BBS生成器 1.1.2.3 用分组密 ...

最新文章

  1. 公开课报名 | 基于自定义模板的OCR结果的结构化处理技术
  2. 科略教育——执行力的3W管理法
  3. ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由
  4. 腾讯微博Android客户端开发——OAuth认证介绍
  5. nginx 1.14.0 配置部署 thinkphp 5.1
  6. QuickBI助你成为分析师-邮件定时推送
  7. 产品经理学技术之数据结构
  8. Spark StreamingContext创建方式
  9. 54. mysqli 扩展库
  10. 【284天】每日项目总结系列022(2017.11.16)
  11. 在Web网页里面实现像Excel/WPS条件格式那样根据数据大小自动改变背景颜色(网页数据热力图实现方法)
  12. Stata作回归分析
  13. 如何用HTML和css实现拼图,打造自己的html5拼图小游戏
  14. Docker神器之百度云下载(群辉 LEDE)
  15. 拉了300M的网,下载速度为啥还是这么慢?计算机基础(五)之网络层完结
  16. 【opencv】19.图像边缘检测算子数学原理、像素一二阶导数的意义
  17. Python开发Windows桌面应用程序(一)PyCharm+PyQt5开发环境搭建
  18. iOS 工作中遇到的问题(面试重点)
  19. QT窗口嵌入桌面内部(在桌面图标之上):可以实现自定义桌面
  20. RSSI,RSRP,RSRQ and SINR

热门文章

  1. Java异常处理和常用类
  2. asp.net mvc web api 参数输入多个参数
  3. 修改一个列表中的一个单词小技巧笔记
  4. Linux基础命令介绍
  5. ADO.NET 数据连接查询
  6. 光伏业务爆发 同景新能源与信义光能签署103MW订单
  7. 细说Nginx配置文件
  8. setsockopt、getsockopt详细介绍(转)
  9. Struts2中ActionContext和ServletActionContext
  10. Ext.tab.Panel页签