#820. 树上路径GCD(GCD)

    ID: 820 传统题 文件IO:gcd 4000ms 256MiB 尝试: 7 已通过: 4 难度: 10 上传者: 标签>GESP考级真题GESP六级基础数据结构数论

树上路径GCD(GCD)

读写要求

本题采用文件读写,请在提交代码时使用正确的文件名,否则会导致 RE

输入文件:gcd.in

输出文件:gcd.out

题目描述

给定一棵由 nn 个节点和 n1n-1 条边组成的连通无向树,以节点 11 为根。如果一个节点 uu 位于根到 vv 的最短路径上,则称 uuvv 的祖先。特别地,一个节点是自己的祖先。

每个节点 vv 被赋予一个美丽值 xvx_v——一个不超过 101210^{12} 的非负整数。

uuvv 的祖先。定义路径美丽值 f(u,v)f(u,v) 为从 uuvv 最短路径上所有节点美丽值的最大公约数。即,若 u=t1,t2,t3,,tk=vu=t_1,t_2,t_3,\dots,t_k=v 是该路径上的节点,则 f(u,v)=gcd(xt1,xt2,,xtk)f(u,v)=\gcd(x_{t_1},x_{t_2},\dots,x_{t_k})。特别地,f(u,u)=gcd(xu)=xuf(u,u)=\gcd(x_u)=x_u

你的任务是求:

u 是 v 的祖先f(u,v)\sum_{u\text{ 是 }v\text{ 的祖先}} f(u,v)

由于结果可能过大,请对 109+710^9+7 取模输出。

注意对于任意 yygcd(0,y)=gcd(y,0)=y\gcd(0,y)=\gcd(y,0)=y。特别地,gcd(0,0)=0\gcd(0,0)=0

输入格式

第一行一个整数 nn (2n1000002\le n\le 100\,000),表示树的节点数。

第二行 nn 个整数 x1,x2,,xnx_1,x_2,\dots,x_n (0xi10120\le x_i\le 10^{12}),表示每个节点的美丽值。

接下来 n1n-1 行,每行两个整数 a,ba,b (1a,bn1\le a,b\le n, aba\neq b),表示一条边。

输出格式

输出所有祖先-后代路径美丽值的和,对 109+710^9+7 取模。

样例输入 #1

5
4 5 6 0 8
1 2
1 3
1 4
4 5

样例输出 #1

42

样例解释

下图展示了所有 1010 条一端为另一端祖先的路径,这些路径的美丽值之和为 4242

样例输入 #2

7
0 2 3 0 0 0 0
1 2
1 3
2 4
2 5
3 6
3 7

样例输出 #2

30

数据范围

  • 2n1000002\le n\le 100\,000
  • 0xi10120\le x_i\le 10^{12}

知识点与难度