#P14926. [北大集训 2025] 字符串问题

[北大集训 2025] 字符串问题

题目描述

给定长度为 nn 的字符串 ss 和系数序列 f1,f2,,fnf_1, f_2, \dots, f_n

定义一个正整数 dd 是一个子串 s[l,r]s[l,r] (1lrn1 \le l \le r \le n) 的周期,当且仅当 drl+1d \le r-l+1 且对于任意 lirdl \le i \le r-d,均有 si=si+ds_i = s_{i+d}

定义一个正整数 dd 是一个子串 s[l,r]s[l,r] (1lrn1 \le l \le r \le n) 的整周期,当且仅当 dds[lr]s[l \dots r] 的周期,且 dd 整除 rl+1r-l+1

对于 1lrn1 \le l \le r \le n,定义子串 s[l,r]s[l,r]价值w(l,r)=f(rl+1)/dw(l,r) = f_{(r-l+1)/d},其中 dd 是子串 s[l,r]s[l,r]最小整周期

对于所有 1in1 \le i \le n,求所有以 ii 为右端点的子串的价值之和,即 j=1iw(j,i)\sum_{j=1}^{i} w(j,i)。由于答案可能较大,你只需要求出答案对 998,244,353998,244,353 取模后的结果。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数 nn,表示字符串 ss 的长度。

输入的第二行包含一个长度为 nn 的字符串 ss

输入的第三行包含 nn 个非负整数 f1,f2,,fnf_1, f_2, \dots, f_n,表示给定的系数序列。

输出格式

输出到标准输出。

输出一行 nn 个非负整数,其中第 ii (1in1 \le i \le n) 个非负整数表示所有以 ii 为右端点的子串的价值之和对 998,244,353998,244,353 取模后的结果。

8
babaaabb
0 1 1 0 0 0 0 0
0 0 0 1 1 2 0 1

提示

【样例 1 解释】

以下为所有价值非 00 的子串:

  • 子串 s[1,4]=babas[1,4] = \text{baba} 的最小整周期为 22,价值为 11
  • 子串 s[4,5]=aas[4,5] = \text{aa} 的最小整周期为 11,价值为 11
  • 子串 s[4,6]=aaas[4,6] = \text{aaa} 的最小整周期为 11,价值为 11
  • 子串 s[5,6]=aas[5,6] = \text{aa} 的最小整周期为 11,价值为 11
  • 子串 s[7,8]=bbs[7,8] = \text{bb} 的最小整周期为 11,价值为 11

【子任务】

对于所有测试数据,均有:

  • 1n1061 \le n \le 10^6
  • 对于所有 1in1 \le i \le nsis_i 均为小写英文字母;
  • 对于所有 1in1 \le i \le n,均有 0fi1090 \le f_i \le 10^9
子任务编号 分值 nn \le 特殊性质
1 10 100100
2 15 5×1035 \times 10^3
3 25 2×1052 \times 10^5 A
4 10 B
5 20 10610^6
6

特殊性质 A:对于所有 1in1 \le i \le n,均有 fi=[2i]f_i = [2 \mid i]

特殊性质 B:存在正整数 kk 满足对于所有 1in1 \le i \le n,均有 fi=[ki]f_i = [k \mid i]