CF1210C.Kamil and Making a Stream
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Kamil 喜欢观看竞技编程的视频。他的 MeTube 频道最近达到了 100 万订阅者。为了庆祝这一时刻,他发布了一个有趣但自己还未能解决的问题。你能帮助他吗?
给定一棵树——一个包含 n 个顶点、由 n−1 条边连接而成的连通无向图。树的根为顶点 1。如果顶点 u 位于从根到顶点 v 的最短路径上,则称 u 是 v 的祖先。特别地,一个顶点也是它自身的祖先。
每个顶点 v 被赋予一个美丽值 xv,它是一个不超过 1012 的非负整数。基于此,我们可以定义一条路径的美丽值。设 u 是 v 的祖先,则路径的美丽值 f(u,v) 定义为从 u 到 v 的最短路径上所有顶点美丽值的最大公约数。形式化地,若 u=t1,t2,t3,…,tk=v 是从 u 到 v 的最短路径上的顶点,则 f(u,v)=gcd(xt1,xt2,…,xtk)。这里 gcd 表示一组数的最大公约数。特别地,f(u,u)=gcd(xu)=xu。
你的任务是计算如下和:
u 是 v 的祖先∑f(u,v)
由于结果可能过大,请输出对 109+7 取模后的答案。
注意,对于任意 y,有 gcd(0,y)=gcd(y,0)=y。特别地,gcd(0,0)=0。
输入格式
第一行包含一个整数 n(2≤n≤100000),表示树的顶点数。
第二行包含 n 个整数 x1,x2,…,xn(0≤xi≤1012),其中 xv 表示顶点 v 的美丽值。
接下来的 n−1 行描述树的边。每行包含两个整数 a,b(1≤a,b≤n,a=b),表示顶点 a 和顶点 b 之间有一条边。
输出格式
输出所有满足 u 是 v 的祖先的路径 (u,v) 的美丽值之和。答案对 109+7 取模。
输入输出样例
输入#1
5 4 5 6 0 8 1 2 1 3 1 4 4 5
输出#1
42
输入#2
7 0 2 3 0 0 0 0 1 2 1 3 2 4 2 5 3 6 3 7
输出#2
30
说明/提示
下图展示了所有 10 条以一个端点为另一个端点祖先的路径。所有这些路径的美丽值之和为 42:

由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?