【10.6 牛客提高(二)】 【结论题】 串串串
题目
解题思路
先举个栗子
10110
10011
可以先统计1的个数,发现都是奇数,那么加起来则为偶数
如果有1的数位相同,那么会同时消掉偶数个1,那么最后不一样的数位奇偶性为0
最后总结一下发现就是,如果1的个数和是偶,那么答案是0,否则为1
代码
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m,q,l1,r1,l2,r2,a[200010],b[200010];
string x,y;
int main()
{
scanf("%d%d",&n,&m);
cin>>x>>y;
for (int i=1;i<=n;i++)
a[i]=a[i-1]+x[i-1]-48;
for (int i=1;i<=m;i++)
b[i]=b[i-1]+y[i-1]-48;
scanf("%d",&q);
for (int i=1;i<=q;i++)
{
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
int xx=a[r1]-a[l1-1],yy=b[r2]-b[l2-1];
printf("%d\n",abs(xx-yy)%2);
}
return 0;
}