传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5922
题目大意:
n个点的完全图,每条边的权值等于连接这两条边的点的序号的最小公倍数,求最小生成树的权值和。
题目分析:
其实很简单,最小生成树就是把点1和其他点连起来。
反证一下,如果这样连不是最小的,假设存在一条边
<x,y>
在最小生成树里比连接
<1,y>
要优,则有
LCM(x,y)<LCM(1,y)=y
,这明显不可能啊~~
注意一下结果有可能爆int。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int T;ll n;
scanf("%d",&T);
for(int i=1;i<=T;i++) {
scanf("%I64d",&n);
printf("Case #%d: %I64d\n", i,n*(n+1)/2-1);
}
}