题目描述
给定长度为 n 的字符串 s 和系数序列 f1,f2,…,fn。
定义一个正整数 d 是一个子串 s[l,r] (1≤l≤r≤n) 的周期,当且仅当 d≤r−l+1 且对于任意 l≤i≤r−d,均有 si=si+d。
定义一个正整数 d 是一个子串 s[l,r] (1≤l≤r≤n) 的整周期,当且仅当 d 是 s[l…r] 的周期,且 d 整除 r−l+1。
对于 1≤l≤r≤n,定义子串 s[l,r] 的价值为 w(l,r)=f(r−l+1)/d,其中 d 是子串 s[l,r] 的最小整周期。
对于所有 1≤i≤n,求所有以 i 为右端点的子串的价值之和,即 ∑j=1iw(j,i)。由于答案可能较大,你只需要求出答案对 998,244,353 取模后的结果。
输入格式
从标准输入读入数据。
输入的第一行包含一个正整数 n,表示字符串 s 的长度。
输入的第二行包含一个长度为 n 的字符串 s。
输入的第三行包含 n 个非负整数 f1,f2,…,fn,表示给定的系数序列。
输出格式
输出到标准输出。
输出一行 n 个非负整数,其中第 i (1≤i≤n) 个非负整数表示所有以 i 为右端点的子串的价值之和对 998,244,353 取模后的结果。
8
babaaabb
0 1 1 0 0 0 0 0
0 0 0 1 1 2 0 1
提示
【样例 1 解释】
以下为所有价值非 0 的子串:
- 子串 s[1,4]=baba 的最小整周期为 2,价值为 1。
- 子串 s[4,5]=aa 的最小整周期为 1,价值为 1。
- 子串 s[4,6]=aaa 的最小整周期为 1,价值为 1。
- 子串 s[5,6]=aa 的最小整周期为 1,价值为 1。
- 子串 s[7,8]=bb 的最小整周期为 1,价值为 1。
【子任务】
对于所有测试数据,均有:
- 1≤n≤106;
- 对于所有 1≤i≤n,si 均为小写英文字母;
- 对于所有 1≤i≤n,均有 0≤fi≤109。
| 子任务编号 |
分值 |
n≤ |
特殊性质 |
| 1 |
10 |
100 |
无 |
| 2 |
15 |
5×103 |
| 3 |
25 |
2×105 |
A |
| 4 |
10 |
B |
| 5 |
20 |
106 |
无 |
| 6 |
特殊性质 A:对于所有 1≤i≤n,均有 fi=[2∣i]。
特殊性质 B:存在正整数 k 满足对于所有 1≤i≤n,均有 fi=[k∣i]。