zoukankan      html  css  js  c++  java
  • 2013成都网络赛 J A Bit Fun(水题)

    A Bit Fun

    Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 1148    Accepted Submission(s): 644


    Problem Description
    There are n numbers in a array, as a0, a1 ... , an-1, and another number m. We define a function f(i, j) = ai|ai+1|ai+2| ... | aj . Where "|" is the bit-OR operation. (i <= j)
    The problem is really simple: please count the number of different pairs of (i, j) where f(i, j) < m.
     
    Input
    The first line has a number T (T <= 50) , indicating the number of test cases.
    For each test case, first line contains two numbers n and m.(1 <= n <= 100000, 1 <= m <= 230) Then n numbers come in the second line which is the array a, where 1 <= ai <= 230.
     
    Output
    For every case, you should output "Case #t: " at first, without quotes. The t is the case number starting from 1.
    Then follows the answer.
     
    Sample Input
    2 3 6 1 3 5 2 4 5 4
     
    Sample Output
    Case #1: 4 Case #2: 0
     
    Source



    关键是理解位或运算
    #include<stdio.h>
    int a[100010];
    int main()
    {
        int t,cou=1,n,m,i,j,b;
        scanf("%d",&t);
        while(cou<=t)
        {
            int ans=0;
            scanf("%d%d",&n,&m);
            for(i=0;i<n;i++)
            scanf("%d",&a[i]);
            for(i=0;i<n;i++)
            {
                b=0;
                for(j=i;j<n;j++)
                {
                    b|=a[j];
                    if(b>=m)
                    break;
                    ans++;
                }
            }
            printf("Case #%d: %d
    ",cou,ans);
            cou++;
        }
        return 0;
    }
    View Code
     
  • 相关阅读:
    C 文件随机读写
    fread(),fwrite()函数
    C 将文本文件内容逆序打印
    C++ 文件复制
    关机效果
    xpath的语法
    ajax json 数据
    转帖 ASP.NET中高级程序员 面试题
    数据库查询的执行顺序
    【转载】母版页引用外部文件的路径问题
  • 原文地址:https://www.cnblogs.com/asd1234/p/3394600.html
Copyright © 2011-2022 走看看