Description
小 D 晚上经常犯困,为了避免犯困小 D 会进行体育运动来使自己保持清醒。
但是今天小 D 太困了,以致于他在操场跑圈的时候睡着了,他做了一个奇怪的梦境,梦中他处于一个巨大的长度为 n 的线段上,他可以在上面以任意整数距离跳来跳去,但是已经跳过的地方不能再次经过。
形式化的,一个长度为 n 的线段,线段上坐标为 1∼n,从 i 跳到 j 的距离是 |i−j|,已经经过的 i 不能再次经过。
小 D 想找到一种方案使得他最清醒,也就是说,使得他跳过的距离的和最大,形式化的,设第 i 次跳跃后所处位置为 posi,即最大化 ∑|posi−posi−1|(2<=i<=n)。
注意,小 D 一开始在位置 1。
Input
一行一个正整数 n 代表线段的长度。
对于 20% 的数据,1≤n≤10
对于 50% 的数据,1≤n≤10^6。
对于 100% 的数据,1≤n≤10^9。
Output
一行一个正整数代表答案。
Sample Input
2
Sample Output
1
解析:最大化跳的距离和,那么我们先跳到最右边没经过的点,再跳回最左边没经过的点,如此反复跳完1~n,总和肯定就是最大的,然后模拟一下发现sum和就是1~n-1的等差数列和,注意需要开long long,不然会WA🐱🏍
#include <stdio.h>
int main()
{
long long n;
scanf("%lld",&n);
printf("%lld\n",(n*n-n)/2);
return 0;
}
