长度为 n 的等差数列的平均值为它的和除以 n。设首项为 0(因为它不重要),则等差数列各项之和为 \frac{(0+(n-1)d)\times n}{2},平均值为其再除以 n,也就是 \frac{(n-1)d}{2}。我们要求它是整数,即 (n-1)d 是偶数。当 d 是偶数则平均数必然是整数;当 d 是奇数时则要求 n 需要是奇数。
不难发现长度为 n 的等差数列的子串包含 1 个长度为 n 的等差数列,2 个长度为 n-1 的等差数列,……,n 个长度为 1 的等差数列。
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
int t;cin>>t;while(t--){
int n,k,d;cin>>n>>k>>d;
if(d%2==0)cout<<n*(n+1)/2<<endl;
else{
cout<<(n+(n%2))*((n+2)/2)/2<<endl;
}
}
return 0;
}