Problem p02708 - Generation 2

Orig Description

Score : 400 points
Problem StatementWe 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.
InputInput is given from Standard Input in the following format:
N K
OutputPrint the number of possible values of the sum, modulo (10^9+7).
Sample Input 13 2
Sample Output 110
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 2200000 200001
Sample Output 21
We must choose all of the integers, so the sum can take just 1 value.
Sample Input 3141421 35623
Sample Output 3220280457

Extracted Specification

An integer N (1 ≤ N ≤ 2×10^5), representing some quantity or size.
An integer K (1 ≤ K ≤ N+1), representing another quantity or size.

### Example Input:

```
3 2
```

### Function Signature:
Write a function f(N, K) that takes in the input.
```python
def f(N: int, K: int):
    ''' 
    N: an integer 
    K: an integer
    '''
```

Test Case Generator

To generate test cases for the problem statement you provided, we need to create a function that generates random values for \(N\) and \(K\) within the specified constraints. Here's how we can do it:

```python
import random

def tcgen():
    N = random.randint(1, 2 * 10**5)
    K = random.randint(1, N + 1)
    return N, K

# Example usage
for _ in range(5):  # Generate 5 test cases
    print(tcgen())
```

This function generates random values for \(N\) and \(K\) within the given constraints:
- \(1 \leq N \leq 2 \times 10^5\)
- \(1 \leq K \leq N + 1\)

Let's break down the function:
1. `N` is chosen randomly between `1` and `2 * 10**5` inclusive.
2. `K` is chosen randomly between `1` and `N + 1` inclusive.

This will produce valid input pairs for the problem.

Here are a few sample outputs from the generator to illustrate:

```
(175634, 14792)
(200000, 192345)
(123456, 98765)
(2, 1)
(199999, 67890)
```

You can use these generated inputs to test your solution for the problem.

Extract Arguments

def extract_arguments(fh):
    N, K = map(int, fh.readline().strip().split())
    return N, K