만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

셜록과 왓슨의 헬스장 비밀 (Large)

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

요약
1 이상 N 이하이고 서로 다른 i, j에 대해 i^A + j^B가 K로 나누어떨어지는 순서쌍의 개수를 세어 10^9+7로 나눈 값을 구한다.
난이도

보통10점 중 7점

유형
정수론, 수학, 조합론, 해시맵
정답자
아직 제출이 없습니다

문제

왓슨과 셜록은 같이 운동하는 헬스장 친구다.

헬스 트레이너는 두 사람에게 세 정수 AA, BB, NN을 주고, NN 이하의 서로 다른 양의 정수 ii와 jj를 고르라고 했다. 왓슨은 매일 새싹을 정확히 iAi^A개 먹어야 하고, 셜록은 매일 정확히 jBj^B개 먹어야 한다.

왓슨과 셜록은 어느 날 두 사람이 먹은 새싹 개수의 합이 어떤 정수 KK로 나누어떨어지면 그날은 사이좋게 지낸다는 사실을 알아냈다.

i≠ji \ne j이면서 iA+jBi^A + j^B가 KK로 나누어떨어지는 쌍 (i,j)(i, j)가 몇 개인지 구하라. 쌍은 순서를 구분하므로 (1,2)(1, 2)와 (2,1)(2, 1)은 서로 다른 쌍이다. 쌍의 개수가 매우 클 수 있으므로 109+710^9+7 (10000000071000000007)로 나눈 나머지를 출력한다.

ii와 jj는 양의 정수이므로 A=0A = 0이면 iA=1i^A = 1이고, B=0B = 0이면 jB=1j^B = 1이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스는 한 줄로 이루어지며, 앞에서 설명한 네 정수 AA, BB, NN, KK가 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 구하는 답이다.

제한

  • 1≤T≤1001 \le T \le 100
  • 0≤A≤1060 \le A \le 10^6
  • 0≤B≤1060 \le B \le 10^6
  • 1≤K≤1000001 \le K \le 100000
  • 1≤N≤10181 \le N \le 10^{18}

힌트

예제의 첫 번째 테스트 케이스에서 가능한 쌍은 (1,2)(1, 2), (1,5)(1, 5), (2,1)(2, 1), (2,4)(2, 4), (4,2)(4, 2), (4,5)(4, 5), (5,1)(5, 1), (5,4)(5, 4)이다.

두 번째 테스트 케이스에서 가능한 쌍은 (1,2)(1, 2), (1,3)(1, 3), (4,1)(4, 1)이다.

세 번째 테스트 케이스에서는 i≠ji \ne j 조건 때문에 가능한 쌍이 없다.

예제1

  1. 예제 1

    입력
    3
    1 1 5 3
    1 2 4 5
    1 1 2 2
    
    예상 출력
    Case #1: 8
    Case #2: 3
    Case #3: 0