题面传送门 又是一道分类讨论的题目。 如果 r > n r>n r>n,那么其实 k = r k=r k=r与 k > r k>r k>r的任何值是一样的,所以可以忽略。而 k = r k=r k=r又只有一个答案,那么答案就是 ( n − 1 ) n 2 + 1 \frac{(n-1)n}{2}+1 2(n−1)n+1 反之,答案就是一个普通等差数列 ( r − 1 ) r 2 \frac{(r-1)r}{2} 2(r−1)r 代码实现:
#include<cstdio> using namespace std; long long n,m,k,x,y,t,ans; int main(){ scanf("%lld",&t); while(t--){ scanf("%lld%lld",&n,&m); if(m<=n-1) ans=(m+1)*m/2; else ans=(n-1)*n/2+1; printf("%lld\n",ans); } }