题目名称 | 2260. 病毒编码 |
---|---|
输入输出 | virusb.in/out |
难度等级 | ★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cqw 于2016-04-21加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:10, 提交:35, 通过率:28.57% | ||||
Cooook | 100 | 2.143 s | 41.82 MiB | C++ |
呵呵酵母菌 | 100 | 2.779 s | 28.11 MiB | C++ |
Aglove | 100 | 2.964 s | 82.91 MiB | C++ |
LadyLex | 100 | 3.509 s | 16.50 MiB | C++ |
天亮说晚安· | 100 | 3.772 s | 19.58 MiB | C++ |
Hzoi_Ivan | 100 | 4.577 s | 7.86 MiB | C++ |
Hzoi_Hugh | 100 | 4.686 s | 29.06 MiB | C++ |
Aglove | 100 | 4.883 s | 82.91 MiB | C++ |
WildRage | 100 | 4.937 s | 99.00 MiB | C++ |
wangxh | 100 | 5.028 s | 7.30 MiB | C++ |
本题关联比赛 | |||
20160421s | |||
20160421s |
关于 病毒编码 的近10条评论(全部评论) |
---|
对一种计算机病毒的加密编码方式是这样决定的。对于一个存储单元,有Flag域与Data域。Flag域由M+2位二进制数表示,设从左向右数第一位为X1,第二位为X2,剩余M位组成一个二进制整数C。Data域为N位二进制数。
对于输入的共N+M+2个二进制位的Flag与Data域,被攻击的电脑会给出一个长度为N的二进制校验序列Test,病毒程序可以花费1的单位时间对Flag,Data,Test任意一位进行修改,以达到伪装欺骗的目的。现要用最短的时间使得该存储单元通过对方的校验码。
校验公式:(Data[i],Test[i]均为从左向右数第i位表示的二进制数)
Test[i]=Data[(i+(X2*2-1)*C) mod N] xor X1 (0<=i<N)
当N次校验全部通过时该存储单元通过校验。
第一行包含两个整数M,N
第二行为一个长度为N的01串描述Data域
第三行为一个长度为N的01串描述Test串
(Flag域在攻击对方之前全为0)
输出一个整数,表示最短的伪装时间除以1005060097的余数
4 8
11011011
10010000
3
数据范围和注释
对于30%的数据,1<=N<=1000,1<=M<=10。
对于100%的数据,1<=N<=100000,1<=M<=16。
样例解释:Flag=100110或110010 ,Data与Test不变
在此键入。