Problem:
Score : 400 points

Problem Statement

We have N+1 integers: 10^{100}, 10^{100}+1, ..., 10^{100}+N.

We will choose K or more of these integers. Find the number of possible values of the sum of the chosen numbers, modulo (10^9+7).

Constraints

1 \leq N \leq 2\times 10^5

1 \leq K \leq N+1

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the number of possible values of the sum, modulo (10^9+7).

Sample Input 1

3 2

Sample Output 1

10

The sum can take 10 values, as follows:

(10^{100})+(10^{100}+1)=2\times 10^{100}+1

(10^{100})+(10^{100}+2)=2\times 10^{100}+2

(10^{100})+(10^{100}+3)=(10^{100}+1)+(10^{100}+2)=2\times 10^{100}+3

(10^{100}+1)+(10^{100}+3)=2\times 10^{100}+4

(10^{100}+2)+(10^{100}+3)=2\times 10^{100}+5

(10^{100})+(10^{100}+1)+(10^{100}+2)=3\times 10^{100}+3

(10^{100})+(10^{100}+1)+(10^{100}+3)=3\times 10^{100}+4

(10^{100})+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+5

(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+6

(10^{100})+(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=4\times 10^{100}+6

Sample Input 2

200000 200001

Sample Output 2

1

We must choose all of the integers, so the sum can take just 1 value.

Sample Input 3

141421 35623

Sample Output 3

220280457

Solution in C (GCC 9.2.1) (judge verdict: Wrong Answer)

#include<stdio.h>
#include <math.h>

int combination(int n, int r)
{
    int tmp=r;
    if(r==0 || r==n){
        return 1;
    }else if(r==1){
        return n;
    }else if(r>n){
        return 0;
    }else{
        for(int i=r-1;i>=1;i--){
            r*=i;
            n*=n-(tmp-i);
        }
        return n/r;
    }
}


int main(void){
    long n,k,tmp=0,max,min;
    scanf("%ld %ld",&n,&k);
    for(long i=k;i<=n+1;i++){
        min=0;
        for(long ii=0;ii<=i-1;ii++){
            min+=ii;
        }
        max=0;
        for(long ia=n;ia>=n-(i-1);ia--){
            max+=ia;
        }
        tmp+=max-min+1;
    }
    printf("%ld",tmp);
    return 0;
}