题目描述
小 Z 是算法竞赛社团的指导老师,他指导了 N 个队员,编号为 1,2,⋯,N,编号为 i 的队员能力值为 ai 。
现在小 Z 要选一些队伍去参加比赛,每个队伍由若干个编号连续的队员组成,也就是说一个队伍可以被描述成一个区间[l,r] ,由编号为l,l+1,⋯,r 的队员组成。每位队员最多被选入一支队伍中。
选拔方案可以用一个区间的序列[l1,r1],[l2,r2],⋯,[lk,rk] 来描述,代表着该方案选拔了k 只队伍,第i 只队伍由编号在[li,ri] 的队员组成。形式化地,要求:
- 1≤k≤N
- ∀i∈{1,2,⋯,k}, 1≤li≤ri≤N
- ∀i∈{1,2,⋯,k−1}, ri<li+1
我们称两个选拔方案不同,当且仅当两个方案对应的区间的序列不同。
根据过去的经验,一个队伍的综合能力值为这个队伍中所有队员能力值的最大公约数 (gcd)。小 Z 希望他选出的所有队伍综合能力值相同,因此他定义一个选拔方案是好的,当且仅当
i∈[l1,r1]gcd{ai}=i∈[l2,r2]gcd{ai}=⋯=i∈[lk,rk]gcd{ai}现在小 Z 想知道,对于每名选手,有多少个好的选拔方案,会将其选入在某一队伍中。
输入格式
从 selection.in
文件读入数据。
第一行一个整数 N,表示选手数。
第二行 N 个整数,a1,a2,…,aN,表示每位选手的能力值。
输出格式
输出到 selection.out
文件。
输出一行 N 个整数,第 i 个数表示有几个好的选拔方案使得第 i 名选手在某一队中。由于答案很大,输出的数字对 998244353 取模。
样例
样例 2
点击链接 ex_selection2.in 和 ex_selection2.out 下载大样例 2 的输入数据和输出数据。
数据范围
对于所有数据,
1≤N≤105,
对于所有 1≤i≤N,1≤ai≤109。
子任务 |
得分 |
附加约束条件 |
1 |
8 |
N≤10,ai≤100 |
2 |
所有 ai 均等于 1 |
3 |
16 |
N≤100 |
4 |
N≤1000 |
5 |
对所有 ai 均存在某个整数 wi ,使得 ai=2wi |
6 |
36 |
无附加限制 |