#GESP7006. [GESP202406七级] 区间乘积

[GESP202406七级] 区间乘积

题目背景

2024 年 6 月 GESP C++ 七级编程第 2 题

题目描述

小杨有一个包含 nn 个正整数的序列 A=[a1,a2,...,an]A=[a_1,a_2,...,a_n]

小杨想知道有多少对 <l,r>(1lrn)<l,r>(1 \leq l \leq r \leq n) 满足 al×al+1×...×ara_l \times a_{l+1} \times ... \times a_r 为完全平方数。

一个正整数 xx 为完全平方数当且仅当存在一个正整数 yy 使得 x=y×yx=y \times y

输入格式

第一行包含一个正整数 nn ,代表树的节点数。

第二行包含 nn 个非负整数 a1,a2,...,ana_1,a_2,...,a_n ,其中如果 ai=0a_i=0 ,则节点 ii 的颜色为白色,否则为黑色。

之后 n1n-1 行,每行包含两个正整数 xi,yix_i,y_i ,代表存在一条连接节点 xix_iyiy_i 的边。

输出格式

输出一个整数,代表满足要求的 <l,r><l,r> 数量。

样例

5
3 2 4 3 2
2

样例解释

满足条件的 <l,r><l,r><3,3><3,3><1,5><1,5>

数据范围

子任务编号 数据点占比 nn aia_i
1 20%20\% 105\leq 10^5 1ai21\leq a_i \leq 2
2 40% 40\% 100\leq 100 1ai301\leq a_i \leq 30
3 40%40\% 105\leq 10^5

对于全部数据,保证有 1n105,1ai301 \leq n \leq 10^5 , 1 \leq a_i \leq 30