RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00066

헬기 착륙장

Platinum IV 플래티넘 IV
난이도
2s
시간 제한
1024MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 0

설명

건물 옥상에 헬리콥터가 착륙할 수 있도록 헬기 착륙장을 만들려고 한다.

  • 헬기 착륙장은 아래와 같은 조건들을 모두 만족해야 한다.
  • 헬기 착륙장은 k (\(k \ge 1\))개의 동심원들로 구성된다.
  • 헬기 착륙장을 구성하는 각 원의 반지름은 1, 2, . . ., k (1 이상 k 이하의 서로 다른 자연수)이다.
  • 각 원의 둘레는 한 가지 색의 페인트로 색칠되어야 한다.

헬기 착륙장의 크기란 동심원 중 반지름이 가장 큰 원의 반지름이며, 위의 조건에서 동심원의 개수 k와 같음을 알 수 있다.

두 헬기 착륙장이 서로 다르다는 것은, 착륙장의 크기가 서로 다르거나, 크기는 같지만 동심원에 칠해진 색의 조합이 다른 것을 의미한다.

반지름이 r인 원의 둘레를 색칠하기 위해서는 정확히 r통의 페인트가 필요하다.

예를 들어, 빨강 페인트가 3통, 파랑 페인트가 4통 있을 때, 이 페인트를 이용하여 만들 수 있는 서로 다른 헬기 착륙장은 아래 그림에서 보인 것처럼 9가지가 있다. X 표시는 동심원의 중심을 나타낸다.

크기: 1
크기: 2
크기: 3

참고로, 크기가 3인 착륙장 중 아래 그림에서 보인 것처럼 그리려면 빨강 페인트 \(4=1\)+3통, 파랑 페인트 2통이 필요한데, 주어진 빨강 페인트 3통으로는 부족하므로 이와 같은 착륙장은 만들 수 없다.

현재 당신은 빨강 페인트 a통과 파랑 페인트 b통을 갖고 있다. 이들만을 이용해 만들 수 있는 서로 다른 헬기 착륙장의 개수를 109 + 7로 나눈 나머지를 구하는 프로그램을 작성하라.

하나의 입력에서 T개의 테스트 케이스를 해결해야 한다.

제약
  • 주어지는 모든 수는 정수이다.
  • \(1 \le T \le 10\,000\)
  • \(1 \le a, b \le 50\,000\)
입력 형식

첫 번째 줄에는 테스트 케이스의 수 T 가 주어진다.

다음 T개의 줄에는 테스트 케이스들이 한 줄에 하나씩 주어진다. 각 줄에는 두 정수 a와 b가 공백 하나를 사이로 두고 주어진다.

출력 형식

각 테스트 케이스에 대해, 한 줄에 하나씩, 빨강 페인트 a통과 파랑 페인트 b통만을 이용해 만들 수 있는 서로 다른 헬기 착륙장의 수를 109 + 7로 나눈 나머지를 출력한다.

서브태스크
서브태스크점수설명

1

3점

\(T = 1\). \(a, b \le 6\).

2

17점

\(T = 1\). \(a, b \le 100\).

3

21점

\(T = 1\). \(a, b \le 1\,000\).

4

23점

\(T = 1\). \(a, b \le 5\,000\).

5

26점

\(T = 1\).

6

10점

추가 제약 조건 없음.

예제 1
입력
3
3 4
10 5
7 12
출력
9
25
40
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2021 > 2차 대회 > 고등부 1번

평가 및 의견

헬기 착륙장

개요
출제자 난이도 Platinum IV 플래티넘 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

헬기 착륙장

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8