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


    /*=======================================================
    位查询
    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
    ",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
    ",ans);
    37         }
    38         else printf("input error!ch==%c
    ",ch);
    39     }
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    Codeforces Round #627 (Div. 3) 总结
    [IOI1994] 时钟
    收集一些优秀的甲方安全开源项目
    python基础——对时间进行加减
    JSFinder:一个在js文件中提取URL和子域名的脚本
    python对齐输出
    python使用smtplib发送邮件
    任务2:扫描渗透测试(50分)[2019年信息安全管理与评估赛题答案-01]
    记一次Xmrig挖矿木马排查过程
    Bypass xss过滤的测试方法
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/4064734.html
Copyright © 2020-2023  润新知