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;
    
    }
    
  • 相关阅读:
    生产宕机dunp配置
    虚拟机下载地址
    处理soapUI特殊返回报文 【原】
    SpringMVC 手动控制事务提交 【转】
    码云URL
    Java IO流操作汇总: inputStream 和 outputStream【转】
    springMVC下载中文文件名乱码【转】
    js
    js
    js
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754860.html
Copyright © 2011-2022 走看看