题目大意

现在,给你两个位数为 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. js常用代码-笔记

    1.字符串截取substr(str,length)返回从指定位置开始,截取length长度的子字符串.substring(start,end)返回从start开始到end结束的字符串.end不写就到结 ...

  2. 欣欣的留言板项目====超级触动的dbUtil实现留言板

    留言板管理系统 我的完成效果图: 提交后: 我的留言板基本架构如图: 创建留言板数据库: 刚开始我的前台主页中写留言信息表单: <body> <h1>留言板</h1> ...

  3. Android 初识Retrofit

    什么是 Retrofit ? Retrofit 是一套 RESTful 架构的 Android(Java) 客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java ...

  4. C# Winform中的ComboBox控件绑定数据库项目作为列表内容

    //初始化院区下拉列表,使用了Oracle数据库中的表项目 try { //string connString = "User=system;Password=manager;Data So ...

  5. Android 文件的可读可写

    文件流形式的保存,获取: 设立文件的私有,可读,可写,公开: 效果图: /data/data中文件夹: 新建一个项目测试文件: 得到data/data,查看文件的特性:

  6. Java基础之this关键字的作用

    this关键字主要存在三种应用 1.this调用本类中的属性,也就是说调用类中的成员变量: 2.this调用本类中的其他方法: 3.this调用本类中的其他构造方法,调用时要放在构造方法的首行,否则会 ...

  7. Tomcat的运行模式

    tomcat的三种运行模式 tomcat Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下:  这三种模式的不同之处如下: ●BIO:  一个线程处理一个请求.缺 ...

  8. 如何申请免费域名证书,以及在IIS上绑定

    1.前往https://freessl.cn/ 申请域名 证书 2.输入邮箱后,点击创建.文件验证方式 会自动下载一个压缩包,把该压缩包放到所申请的域名首层下.(不要重复创建,需要3,5分钟.最好手动 ...

  9. ssh免密码登陆失败的原因

    今天因为需要在两台服务器上进行ssh免登陆,所以安装网上的教程,ssh-keygen -t rsa,然后把相互的密钥加入到对方的authorized_keys. 问题是我们虽然这样做了,却一直要密码, ...

  10. 第二周 day2 python学习笔记

    1. python中的三元运算: result=value1 if 条件 else value2 如果条件成立,result=value1 如果条件不成立,result=value2 2. pytho ...