博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A.DongDong破密码
阅读量:6906 次
发布时间:2019-06-27

本文共 1079 字,大约阅读时间需要 3 分钟。

链接:

题意:

 

DongDong是一个喜欢密码学的女孩子,她养的萨摩耶叼着一张带着加密信息的纸条交给了她,如果她不能破解这张密码,萨摩耶是不会高兴的。

给定n,m,给出长度为n的01串,每次向后移动一位,移动m-1次,最后求出这n+m-1位每一位的异或值(0^0=0,1^1=0,0^1=1)成为密码。(如下图这样,此时n=6,m=3)

思路:

从前往后找,可以看出原串的m位置到n位置中的p位置是根据答案串来得到。

即p位置为0即答案串p-m+1到p位置中1的个数为偶数,为1则为奇数。

两边的位置串同理,只不过范围是从1-p位置跟p-n位置1的个数。

代码:

#include 
using namespace std; typedef long long LL;const int MAXN = 3e5 + 10;const int MOD = 1e9 + 7;int n, m, k, t; int main(){ cin >> n >> m; string s; cin >> s; int cnt = 0; string res; for (int i = 0;i < n;i++) { if (i >= m && res[i-m] == '1') cnt--; if (s[i] == '0') { if (cnt % 2 == 0) res += '0'; else { res += '1'; cnt++; } } else { if (cnt%2 == 1) { res += '0'; } else { res += '1'; cnt++; } } } cout << res << endl; return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10989562.html

你可能感兴趣的文章
Gulp 笔记
查看>>
NOI2004郁闷的出纳员
查看>>
scrapy在ubuntu上安装总结
查看>>
Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
查看>>
Hadoop编译
查看>>
bzoj 5355 kdtree 树链剖分
查看>>
序列化对象
查看>>
ubuntu安装甲骨文最新jdk7
查看>>
AngularJS, Ember.js, Backbone这类新框架与 jQuery的重要区别在哪里?
查看>>
director.js:客户端的路由---简明中文教程
查看>>
Web UI自动化测试中绕开验证码登陆方式浅谈
查看>>
get和load的区别
查看>>
未来的规划
查看>>
一起来学opencv(二):图片通道及色彩空间转化
查看>>
iOS后台运行
查看>>
1632: [Usaco2007 Feb]Lilypad Pond
查看>>
了解js运行机制——微任务与宏任务
查看>>
06 iOS 关闭侧滑返回
查看>>
lc107. Binary Tree Level Order Traversal II
查看>>
Shell 特殊变量
查看>>