http://acm.hdu.edu.cn/showproblem.php?pid=5922
Problem Description
There is a graph of n vertices which are indexed from 1 to n. For any pair of different vertices, the weight of the edge between them is the least common multiple of their indexes.
Mr. Frog is wondering about the total weight of the minimum spanning tree. Can you help him?
Input
The first line contains only one integer T (T≤100), which indicates the number of test cases.
For each test case, the first line contains only one integer n (2≤n≤109), indicating the number of vertices.
Output
For each test case, output one line "Case #x:y",where x is the case number (starting from 1) and y is the total weight of the minimum spanning tree.
Sample Input
2 2 3
Sample Output
Case #1: 2 Case #2: 5
Hint
In the second sample, the graph contains 3 edges which are (1, 2, 2), (1, 3, 3) and (2, 3, 6). Thus the answer is 5.
题意分析:
有n个点,每两个点之间的距离是节点编号的最小公倍数,求最小生成树
解题思路:
n个点的最小生成树有n-1条边,每个数和其他数的最小公倍数大于等于两数之间较大的一个,把每个点都和1相连,最小生成树就是2+3+.....+n。
#include <stdio.h>
int main()
{
int T, t=0;
long long n;
scanf("%d", &T);
while(T--)
{
scanf("%lld", &n);
printf("Case #%d: %lld
", ++t, n*(n+1)/2-1);
}
return 0;
}