아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

장난감

시간 제한2초메모리 제한512 MB

요약
한 원판의 n개 클램프와 다른 원판의 m개 클램프를 실로 연결해 만드는 장난감의 수를 센다. 두 원판을 각각 독립적으로 회전해 같아지는 장난감은 하나로 보고, 1,000,000,007로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
조합론, 정수론, 수학, 비트 연산
정답자
아직 제출이 없습니다

문제

심사위원장은 원판 두 개로 장난감을 하나 만든다. 하나는 빨간 원판, 하나는 파란 원판이고, 두 원판의 중심을 축 하나가 관통한다. 두 원판은 이 축을 중심으로 각각 따로 돈다.

빨간 원판의 가장자리에는 집게가 nn개, 파란 원판의 가장자리에는 집게가 mm개 같은 간격으로 달려 있다. 빨간 원판의 집게와 파란 원판의 집게는 잘 휘는 끈으로 이을 수 있다. 집게 하나에 끈을 여러 개 맬 수 있지만, 집게 두 개 사이를 잇는 끈은 많아야 하나다.

nn과 mm이 주어졌을 때 심사위원장이 만들 수 있는 서로 다른 장난감의 개수를 1,000,000,007로 나눈 나머지를 구하라. 두 원판을 축 둘레로 돌려서 한 장난감을 다른 장난감과 똑같이 만들 수 있으면 둘은 같은 장난감이다. 이때 두 원판을 돌리는 각도는 서로 달라도 된다. 끈이 어느 집게 두 개를 잇는지만 중요하고, 끈이 두 원판 사이 공간에서 어떤 경로를 그리는지는 상관없다.

아래 그림에서 (a)와 (b)는 같은 장난감이다. 왼쪽 빨간 원판을 반시계 방향으로 한 칸, 오른쪽 파란 원판을 반시계 방향으로 네 칸 돌리면 (a)가 (b)가 된다. (c)는 다른 장난감이다.

두 원판 장난감의 예 세 가지

입력

첫째 줄에 데이터 집합의 개수 PP가 주어진다 (1≤P≤10001 \le P \le 1000).

다음 PP개 줄에 데이터 집합이 한 줄에 하나씩 주어진다. 각 줄에는 데이터 집합 번호 KK와 정수 nn, mm이 공백으로 구분되어 주어진다 (2≤n,m≤1072 \le n, m \le 10^7). 모든 데이터 집합은 서로 독립이고, 처리 방식은 같다.

출력

각 데이터 집합마다 한 줄에 데이터 집합 번호 KK, 공백 하나, 그 nn과 mm에 대한 서로 다른 장난감의 개수를 1,000,000,007로 나눈 나머지를 차례로 출력한다.

예제1

  1. 예제 1

    입력
    9
    1 2 2
    2 2 3
    3 2 4
    4 3 3
    5 3 4
    6 3 5
    7 4 5
    8 5 5
    9 323214 123355
    
    예상 출력
    1 7
    2 14
    3 40
    4 64
    5 352
    6 2192
    7 52488
    8 1342208
    9 396610709