luogu#P10040. [CCPC 2023 北京市赛] 替换

[CCPC 2023 北京市赛] 替换

题目描述

给定一个长度为 nn、字符集为 01? 的字符串 s1s2sns_1s_2 \cdots s_n

对于任意 k[1,n]k \in [1,n],考察字符串 Tk=t1t2tnT_k = t_1 t_2 \cdots t_n,其中对于 1in1 \le i \le n

  • sis_i \ne ?,则 ti=sit_i = s_i
  • 否则,若 iki \le kti=t_i = 0
  • 否则 ti=tikt_i = t_{i-k},你可以通过递归地算出 tikt_{i-k} 得到 tit_i

容易发现 TkT_k 的字符集为 01。你需要对所有 k[1,n]k \in [1,n] 求出 TkT_k1 的个数。

输入格式

输入的第一行一个整数 n(1n105)n (1 \le n \le 10^5) 表示字符串长度,第二行一个长度为 nn、字符集为 01? 的字符串 s1s2sns_1s_2\cdots s_n

输出格式

输出 nn 行,第 ii 行一个整数表示 TiT_i1 的个数。

5
10?1?
3
4
2
3
2

提示

T1=T_1 = 10011T2=T_2 = 10111T3=T_3 = 10010T4=T_4 = 10011T5=T_5 = 10010