Code
TL : 1s
ML : 512MB
题目描述
mas在做看Computer Science:An overview的时候,看到了对文本进行编码的方法,文中提到了哈弗曼编码,海明距离等概念,mas突发奇想,想到了一种奇特的文本加密方式。
一开始,他有一个长度为n的01串s,然后他采取以下方式对字符串进行加密:
根据串s,mas可以得到一个长度为k的序列a1,a2,…,ak,如果s[1]=1,那么表示s由a1个1,a2个0,a3个1……按顺序拼接而成,否则如果s[1]=0,那么表示s由a1个0,a2个1,a3个0……按顺序拼接而成。然后,mas将每个数字表示成二进制数字,按顺序拼接得到字符串t,字符串t即为对s进行加密得到的结果。
举个例子,s=1101000,那么k=4,a1=2,a2=1,a3=1,a4=3,将a1,a2,a3,a4转化成二进制可以得到10,1,1,11,按顺序拼接得到t=101111,那么101111即为对1101000进行加密得到的结果。
现在mas费尽千辛万苦得到了加密后的字符串t,但是他忘记初始的s是什么了,只记得s的长度不超过m,他想知道初始有多少种不同的s满足条件。
输入
第一行一个整数m,表示s的长度不超过m
第二行一个字符串t,保证t的长度不超过m
输出
由于答案可能很大,请输出答案对998244353取模的结果。
样例输入1
20
1100111110
样例输出1
44
数据范围
- (20pts) m≤20
- (30pts) m≤500
- (50pts) m≤3000