小Q定义了一种数列称为翻转数列:
给定整数 n 和 m, 满足 n 能被 2m 整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔 m 个符号翻转一次, 最初符号为'-'。
例如 n = 8, m = 2, 数列就是: -1, -2, +3, +4, -5, -6, +7, +8.
而 n = 4, m = 1, 数列就是: -1, +2, -3, + 4.
小Q现在希望你能帮他算算前 n 项和为多少。
- 输入描述:
输入包括两个整数 n 和 m (2 <= n <= 10^9, 1 <= m),
并且满足 n 能被 2m 整除。
- 输出描述:
输出一个整数, 表示前 n 项和。
- 输入例子:
8
2
- 输出例子:
8
观察一下发现这个数列每 2m 个数的和都为 m*m
所以看这个数列有多少组,然后乘 m*m 就是结果啦
import java.util.*;
public class FlipSequence {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n =in.nextInt();
int m =in.nextInt();
System.out.println(flip(n, m));
}
}
public static long flip(int n, int m) {
if (n % (2 * m) != 0) {
return 0;
}
long group = n / (2 * m);
long res = group * m * m;
return res;
}
}
Q.E.D.