题目描述
YYH拥有一个有n个城市的国家,编号为1~n。其中城市i到城市j的路径长度为i和j的最小公倍数。现在YYH想建一些高速公路,使得任意两座城市都能通过高速公路直接或间接到达。建造一条高速公路的代价为这条高速公路的长度,他想知道最小代价是多少?
输入输出格式
输入格式:
第一行输入一个整数,T,表示有T组数据。
接下来T行每行输出一个整数n,表示有n个国家
输出格式:
输出T行,每行一个数字表示最小代价
好吧,这道题还是结论题,
我们很容易就发现如果所以点都向1连边,那么答案一定最优。
所以我们只要计算2+3+4+5+...+n即可。
记住!不要智障地用for循环!
等差数列!!
#include<iostream> #include<cstdio> using namespace std; long long t,n,num; unsigned long long ans; int main(){ scanf("%d",&t); for(int i=1;i<=t;i++) { ans=0; scanf("%d",&n); ans=(1+n)*n/2-1; printf("%lld ",ans); } }