https://codeforces.com/contest/1562/problem/A
시간 1초, 메모리 512MB
input :
output :
조건 :
이 문제는 예제에서 도움을 받았다.
3번째 예제와 4번째 예제를 보면 답이 둘 다 r // 2에 근접한 것을 볼 수 있다.
그래서 그냥 나눈 다음 + 1 한 것으로 나머지를 구하면 그게 가장 큰 값인가? 하고 생각을 한 다음
해당 예제에 끄적여보니 그런거 같아서 그렇게 출력을 하도록 하였다.
혹시 l이 r // 2한 것보다 크다면 l을 가지고 나머지 연산을 수행하면 된다.
r이 가장 큰 숫자이기 때문에 얘는 고정이고 얘를 통해 나머지를 가장 크게 구하려고 한다면 얘를 2로 나눈 값에서 1을 더한 값이 가장 큰 값을 준다.
3을 나눈 값, 4를 나눈 값과 비교를 해서 봐도 그럴 것이다.
import sys
for _ in range(int(sys.stdin.readline())):
l, r = map(int, sys.stdin.readline().split())
if l == r:
print(0)
continue
start = r // 2
if start < l:
print(r % l)
continue
print(r % (start + 1))