Легкий підрахунок масивів#12254

Легкий підрахунок масивів (Розбір)

Автор проблеми:

Хасан Салех (MathModel)

Підготовлено:

Хасан Салех (MathModel)

Редагував:

Хасан Салех (MathModel)

Рішення

Для n=1 єдиний вибір - (a=b), і в цьому випадку відповідь дорівнює 1.

Для інших ми маємо наступний масив, припускаючи спільну різницю :

[a,a+d,a+2d,...,a+(n-1)d]

Тепер ми хочемо визначити , що є a+(n-1)d \le b, це дає нам

b-a = (n-1)d \implies \max(d)=\left \lfloor \frac{b-a}{n-1} \right \rfloor

і всі d \in \{0,1,...,\left \lfloor \frac{b-a}{n-1} \right \rfloor\} будуть працювати, отже, відповідь дорівнює \left \lfloor \frac{b-a}{n-1} \right \rfloor+1.

Складність .

for _ in range(int(input())):
    n,a,b=map(int,input().split())
    if(n==1):
        print(1)
        continue
    print((b-a)//(n-1)+1)