· · 个人记录

描述

一棵树有 n 个节点,n-1 条边。第 i 条边连接的两个结点是 u[i]和 v[i]。第 i 个结点有一个权

值 a[i]。对于任意的 1<=i<j<=n,给出一些定义:

1、定义 Path[i][j]表示结点 i 到结点 j 的简单路径上的所有结点的集合。

2、定义 gcd[i][j]表示 Path[i][j]集合内所有结点的权值的最大公约数。

3、定义 size[i][j]表示结点 i 到结点 j 的简单路径所包含的结点数量(包含结点 i 和 j)。

4、定义 cost[i][j] = size[i][j] × gcd[i][j]。

你的任务是:对于任意的 1<=i<j<=n,求 cost[i][j]的总和,答案模998244353。

输入格式

第一行,一个整数 n。

第二行,n 个整数,第 i 个整数是 a[i]。

接下有 n-1 行,第 i 行是两个整数 u[i]和 v[i],1<= u[i]<v[i]<=n, 表示树的第 i 条边。

输入 第一行,一个整数 n。

第二行,n 个整数,第 i 个整数是 a[i]。

接下有 n-1 行,第 i 行是两个整数 u[i]和 v[i],1<= u[i]<v[i]<=n, 表示树的第 i 条边。

输出

一个整数。

输入样例 1

4

24 30 28 7

1 2

1 3

3 4

输出样例 1

47

输入样例 2

10

180 168 120 144 192 200 198 160 156 150

1 2

2 3

2 4

2 5

5 6

4 7

7 8

7 9

9 10

输出样例 2

1184

提示

【数据范围】

对于 50%的数据, 1<=n<=1000,1<=a[i]<=100000。

题目来源

BCOJ

已找到原题!!!!!!