区间乘积 题面描述 小杨有一个包含n个正整数的序列A=[a1,a2,...,an]。 小杨想知道有多少对 (1≤l≤r≤n)满足为完全平方数。 一个正整数x为完全平方数当且仅当存在一个正整数y使得x=y×y。 输入格式 第一行包含一个正整数n,代表正整数个数。 第二行包含n个正整数 a1,a2,...,an,代表序列 A。 输出格式 输出一个整数,代表满足要求的 数量。 样例1 样例解释 满足条件的 有 和 。 数据范围



正确答案:区间乘积为完全平方数等价于区间内各质因子指数奇偶异或为0。把每个数质因子分解后取指数奇偶掩码,求前缀异或pre[r]^pre[l-1]==0即pre[r]==pre[l-1]。统计相同前缀掩码出现次数,累加C(c,2)。
试卷来源:202406 CCF-GESP编程能力等级认证C++七级真题