#iai17a1. 随机序列求逆(Random Sequence Inverse)
随机序列求逆(Random Sequence Inverse)
随机序列求逆(Random Sequence Inverse)
题目描述
对一个正整数 反复执行以下过程 次,会得到一个二进制字符串:
s = floor((a*s+c)/k) mod m
if (s < floor(m/2))
output 0
else
output 1
其中 表示不超过 的最大整数。
给定一个二进制字符串 ,请问一开始 有多少种不同的取值,可以让输出的字符串恰好等于 ?
(规定 的取值范围:)
输入格式
第一行:五个整数 ,,,,。 第二行: 个字符,表示给定的二进制字符串 。
输出格式
单个整数:表示满足条件的 的初值的方案数。
样例输入 #1
7 3 10 10 10
0000000000
样例输出 #1
7
数据范围
- 对于 50% 的数据:,
- 对于 100% 的数据:,
- ,,
知识点与难度
本题涉及的知识点从属于 GESP 7级,难度等级:⭐⭐⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 m≤10^4 |
| 2 | 15 | 9~11 | Hack |
| 3 | 30 | 12~20 | 中规模 |
| 4 | 25 | 21~25 | 大规模 |