zoukankan      html  css  js  c++  java
  • Codeforces Round #515 (Div. 3) E. Binary Numbers AND Sum

      由题意可以知道a&b产生的值对答案有m次贡献,按次算贡献值是肯定超时的,所以按位算贡献,观察可以发现只有a这个二进制数里的1对答案有贡献,贡献值为pre[i]*这个1对应的值(即假如这个1是第i为,则这个1对应的值就是2^(i-1)),pre[i]表示二进制数b第i位及前面1的个数,用前缀和的思想求。

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define mod 998244353
    const int maxn=2e5+10;
    int a[maxn],b[maxn],pre[maxn],n,m;
    ll quickpower(ll a,ll b,ll c)
    {
        ll res=1;
        a%=c;
        while(b)
        {
            if(b&1)
                res=(res*a)%c;
            a=(a*a)%c;
            b=b>>1;
        }
        return res;
    }
    int main()
    {
        int tmp=0;
        ll ans=0;
        scanf("%d %d",&n,&m);
        for(int i=n;i>=1;i--)
        {
            char ch;
            scanf(" %c",&ch);
            a[i]=ch-'0';
        }
        for(int i=m;i>=1;i--)
        {
            char ch;
            scanf(" %c",&ch);
            b[i]=ch-'0';
        }
        for(int i=max(n,m);i>=n;i--)
            if(b[i]==1)
                tmp++;
        pre[n]=tmp;
        for(int i=n-1;i>=1;i--)
            if(b[i]==1)
                pre[i]=pre[i+1]+1;
            else
                pre[i]=pre[i+1];
        for(int i=n;i>=1;i--)
        {
            if(a[i]==1)
                ans=(ans+(pre[i]*quickpower(2,i-1,mod))%mod)%mod;
        }
        printf("%d
    ",ans);
        return 0;
    
    }
    
  • 相关阅读:
    测试的种类
    软件测试的原则
    软件测试的目的
    软件测试的对象
    软件的分类
    软件测试
    mysql 视图
    mysql 字段添加以及删除
    mysql 引擎类型
    mysql 数据插入insert
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754861.html
Copyright © 2011-2022 走看看