UOJ Logo

NOI.AC

1S 512MB

#741. code

统计

Code

TL : 1s

ML : 512MB

题目描述

mas在做看Computer Science:An overview的时候,看到了对文本进行编码的方法,文中提到了哈弗曼编码,海明距离等概念,mas突发奇想,想到了一种奇特的文本加密方式。

一开始,他有一个长度为n的01串s,然后他采取以下方式对字符串进行加密:

根据串s,mas可以得到一个长度为k的序列a1,a2,,ak,如果s[1]=1,那么表示sa1个1,a20a31……按顺序拼接而成,否则如果s[1]=0,那么表示sa1个0,a21a30……按顺序拼接而成。然后,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

数据范围

  1. (20pts) m20
  2. (30pts) m500
  3. (50pts) m3000