位查询【 openjudge数据结构课程练习题】

简介: /*======================================================= 位查询 http://dsalgo.openjudge.cn/linearlists/3/ 总时间限制:5000ms 内存限制: 65536kB 描述 给出N个范围在[0, 65535]的整数,编程支持以下的操作: (1)修改操作:C d,所有的数都增加d。
/*=======================================================
位查询
http://dsalgo.openjudge.cn/linearlists/3/

总时间限制:5000ms 内存限制: 65536kB
描述
        给出N个范围在[0, 65535]的整数,编程支持以下的操作:
    (1)修改操作:C d,所有的数都增加d。如果超过65535,把结果模65536。 0 <= d <= 65535
    (2)查询操作:Q i,统计在N个正整数中有多少个整数其对应的二进制形式的第i位二进制位为非0。0 <= i <= 15。并且最低位i为0。
      最后,输出所有查询操作的统计值。
输入
    输入的第一行为两个正整数N,M,其中N为操作的整数的个数,而M为具体有多少个操作。
    输入的第二行为N个正整数,为进行操作的N个正整数。
    下面有M行,分别表示M个操作。
    数据范围:N<=100000,M<=200000
输出
    输出所有查询操作Q的统计值,每一个查询操作统计结果输出为一行。
样例输入
    3 5
    1 2 4
    Q 1
    Q 2
    C 1
    Q 1
    Q 2
样例输出
    1
    1
    2
    1
提示
    只输出查询操作Q的统计值。
=========================================================*/
题目描述

这个题目要注意输入数据时不要忘记清除回车符。

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 int main()
 5 {
 6     long N,M;
 7     long *a;
 8     char ch;
 9     long j,d;
10     long i;
11     long ans;
12     freopen("data.in","r",stdin);
13     freopen("data.out","w",stdout);
14     scanf("%ld%ld",&N,&M);
15     
16     a=(long *)malloc(N*sizeof(long));
17     for(j=0;j<N;j++) scanf("%ld",&a[j]);
18     getchar();//注意这里。
19     for(j=0;j<M;j++)
20     {
21         scanf("%c %ld",&ch,&d);
22         getchar();//注意这里。
23         /*printf("%c %ld\n",ch,d);*/
24         
25         if(ch=='C')
26         {
27             for(i=0;i<N;i++)
28                 a[i]=(a[i]+d)%65535;
29         }
30         else if(ch=='Q')
31         {
32             ans=0;
33             d=pow(2,d);
34             for(i=0;i<N;i++)
35                 if(a[i]&d) ans++;
36             printf("%ld\n",ans);
37         }
38         else printf("input error!ch==%c\n",ch);
39     }
40     return 0;
41 }
View Code

 

相关文章
|
SQL
(三)数据结构化查询语言(高级用法)
(三)数据结构化查询语言(高级用法)
101 0
(三)数据结构化查询语言(高级用法)
|
2月前
|
存储 缓存 索引
从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低
本文详细对比了ArrayList和LinkedList的查询效率,从底层数据结构和CPU缓存两个方面进行分析。ArrayList基于动态数组,支持随机访问,查询时间复杂度为O(1),且CPU缓存对其友好;而LinkedList基于双向链表,需要逐个节点遍历,查询时间复杂度为O(n),且CPU缓存对其帮助不大。文章还探讨了CPU缓存对数组增删操作的影响,指出缓存主要作用于读取而非修改。通过这些分析,加深了对这两种数据结构的理解。
47 2
|
4月前
|
JSON NoSQL MongoDB
MongoDB Schema设计实战指南:优化数据结构,提升查询性能与数据一致性
【8月更文挑战第24天】MongoDB是一款领先的NoSQL数据库,其灵活的文档模型突破了传统关系型数据库的限制。它允许自定义数据结构,适应多样化的数据需求。设计MongoDB的Schema时需考虑数据访问模式、一致性需求及性能因素。设计原则强调简洁性、查询优化与合理使用索引。例如,在构建博客系统时,可以通过精心设计文章和用户的集合结构来提高查询效率并确保数据一致性。正确设计能够充分发挥MongoDB的优势,实现高效的数据管理。
91 3
|
4月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
4月前
|
安全 C# 数据安全/隐私保护
WPF安全加固全攻略:从数据绑定到网络通信,多维度防范让你的应用固若金汤,抵御各类攻击
【8月更文挑战第31天】安全性是WPF应用程序开发中不可或缺的一部分。本文从技术角度探讨了WPF应用面临的多种安全威胁及防护措施。通过严格验证绑定数据、限制资源加载来源、实施基于角色的权限管理和使用加密技术保障网络通信安全,可有效提升应用安全性,增强用户信任。例如,使用HTML编码防止XSS攻击、检查资源签名确保其可信度、定义安全策略限制文件访问权限,以及采用HTTPS和加密算法保护数据传输。这些措施有助于全面保障WPF应用的安全性。
62 0
|
5月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
199 1
|
6月前
|
算法
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
46 2
|
7月前
|
JavaScript Java 测试技术
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
44 2
|
7月前
|
存储
数据结构:图文详解单链表的各种操作(头插法,尾插法,任意位置插入,删除节点,查询节点,求链表的长度,清空链表)
数据结构:图文详解单链表的各种操作(头插法,尾插法,任意位置插入,删除节点,查询节点,求链表的长度,清空链表)
700 0
|
6月前
|
缓存 NoSQL 关系型数据库
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前