题目大意

现在,给你两个位数为 n 和 m 的两个二进制数a,b,现在,我们要进行如下操作:

  • 计算a&b
  • 答案累加上一个操作的值
  • bbb右移一位,最后一位直接舍弃

现在,请你算出最终的答案,并输出,答案对998244353取模

输入输出格式:

输入格式:

第一行,两个整数n,m,(1≤n,m≤2×105)

第一行,一个长度为n的二进制数a

第一行,一个长度为m的二进制数b

输出格式:

一行,一个数,表示答案

思路:

因为第一个二进制数不动,第二个在动,所以我们可以通过预处理第一个数来获得答案

因为是与,所以只有两个都是1时才会有答案的贡献

那么,比如说这个例子:

1001
11010

他就会有如下几种情况

01001
11010

1001
1101

1001
0110

1001
0011

1001
0001

我们会发现,第一位的1分别和上面的第一个1和最后一个1异或起来对答案有贡献

所以这个1对答案的贡献是8+1=9

我们把这个规律推广开来

对y中每一个1进行如上操作

即可得出答案

但是,我们会发现答案复杂度是O(n×m)的,过不了

所以我们要预处理

用前缀和跑一遍x即可

复杂度优化到O(m+n)

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
#define p 998244353
#define int long long
using namespace std;
int a,b;
int x[],y[],bs[],qzh[];
void ycl()
{
bs[]=;
for(rii=;i<=;i++)
{
bs[i]=bs[i-]*;
bs[i]%=p;
}
}
signed main()
{
scanf("%lld%lld\n",&a,&b);
for(rii=;i<=a;i++)
{
x[i]=getchar()-'';
}
getchar();
for(rii=;i<=b;i++)
{
y[i]=getchar()-'';
}
ycl();
for(rii=a;i>=;i--)
{
qzh[a-i+]=qzh[a-i];
qzh[a-i+]+=x[i]*bs[a-i];
qzh[a-i+]%=p;
}
if(b>a)
{
for(rii=a+;i<=b;i++)
{
qzh[i]=qzh[i-];
}
}
// for(rii=1;i<=b;i++)
// {
// printf("%d ",qzh[i]);
// }
int ans=;
for(rii=;i<=b;i++)
{
ans+=y[i]*qzh[b-i+];
ans%=p;
}
cout<<ans%p;
}

CF1066EBinary Numbers AND Sum(前缀和,二进制)的更多相关文章

  1. Codeforces Round #515 (Div. 3) E. Binary Numbers AND Sum

    E. Binary Numbers AND Sum 题目链接:https://codeforces.com/contest/1066/problem/E 题意: 给出两个用二进制表示的数,然后将第二个 ...

  2. Codeforces Round #515 (Div. 3) E. Binary Numbers AND Sum (二进制,前缀和)

    题意:有两个\(01\)字符串\(a\)和\(b\),每次让\(a\)和\(b\)进行与运算,将值贡献给答案,然后将\(b\)右移一位,直到\(b=0\). 题解:因为\(a\)不变,而\(b\)每次 ...

  3. Binary Numbers AND Sum CodeForces - 1066E (前缀和)

    You are given two huge binary integer numbers aa and bb of lengths nn and mmrespectively. You will r ...

  4. Codeforces Round #336 (Div. 2)B. Hamming Distance Sum 前缀和

    B. Hamming Distance Sum 题目连接: http://www.codeforces.com/contest/608/problem/A Description Genos need ...

  5. 补写:Best Coder #85 1001 Sum(前缀和)

    sum Accepts: 640 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...

  6. E. Binary Numbers AND Sum

    链接 [http://codeforces.com/contest/1066/problem/E] 题意 给你长度分别为n,m的二进制串,当b>0时,对a,b,&运算,然后b右移一位,把 ...

  7. Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.

    In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...

  8. hdu 5776 sum 前缀和

    sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

  9. Codeforces 165 E. Compatible Numbers【子集前缀和】

    LINK 题目大意 给你一个数组,问你数组中的每个数是否可以在数组里面找到一个数和他and起来是0,如果可以就输出这个数,否则就输出-1 思路 首先很显然的是可以考虑找到每个数每一位都取反的数的子集 ...

随机推荐

  1. 原生ajax与封装的ajax使用方法

    当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...

  2. Codeforces Round #414 A. Bank Robbery

    A. Bank Robbery time limit per test 2 seconds memory limit per test   256 megabytes   A robber has a ...

  3. Sqlite 数据库分页查询(ListView分页显示数据)

    下面介绍一下我的这个demo. 流程简述: 我在raw文件夹下面放了名称为city的数据库,里面包含全国2330个城市,以及所属省,拼音简写等信息. 首先 在进入MainActivity的时候,创建数 ...

  4. named 快速部署及主机记录普及

    实验环境centos7.2,仅供参考 yum -y install epel-release    --安装最新yum配置源 cd /etc/yum.repos.d/ # wget http://re ...

  5. javascript模块化以及加载打包

    https://addyosmani.com/writing-modular-js/ 一些术语: 模块:可以理解为一个js文件,就像你以前需要import的那个文件一样:module不一定非要是一个外 ...

  6. 安装nginx及依赖包

    #!/bin/bash #auto zhangjia #date 20171007#安装SSL##################################################### ...

  7. 沉淀,再出发:Maven的使用和规范

    沉淀,再出发:Maven的使用和规范 一.前言 Maven作为项目管理工具,在一个大型项目开发的每个阶段都有着很大的用处,为什么需要这个东西呢,还是为了消除不确定性,统一化管理,正如我们做的每一件事其 ...

  8. AutoHotkey批量L版代码转H2的vim脚本

    原脚本尽量用表达式的语法写,错误会比较少,比如"If a=", "fun(a=1)"这种语法在V2会出错文件放vim的autoload目录下,可使用以下map使 ...

  9. TCP、UDP、Socket 通信(原)

    说明:本随笔主要演示自己给自己发送消息例子,分别使用了TCP协议.UDP协议以及socket套接字通信.使用socket套接字了模拟TCP.UDP通信实现原理.其中有些源码都来自<C#高级编程 ...

  10. easyui学习笔记9—手风琴格子的增,删和选择

    这一篇中我们将看看如何给手风琴动态的增加,删除格子,怎样选择某一个格子的. 1.先看看引用的资源 <link rel="stylesheet" href="jque ...