캔디의 사탕

시간 제한1초메모리 제한128 MB

요약
F개 맛의 사탕 개수를 같은 크기의 팩으로 나누되, 모든 맛이 든 팩이 하나 이상 있고 각 맛마다 단일 맛 팩이 하나 이상인 분할의 수를 센다.
난이도

어려움10점 중 8점

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

문제

캔디는 서로 다른 FF가지 맛의 사탕을 가지고 있으며, 이 사탕들로 여러 개의 팩을 만들어 팔려고 한다. 각 팩은 다음 두 종류 중 하나이다.

  • 단일맛 팩: 한 가지 맛의 사탕만 담은 팩
  • 종합 팩: 모든 맛의 사탕을 담은 팩

캔디는 다음 조건을 모두 만족하는 포장을 "좋은 포장"이라고 부른다.

  • 모든 사탕은 정확히 하나의 팩에 담겨야 한다.
  • 종류에 상관없이 모든 팩은 적어도 22개의 사탕을 담아야 한다.
  • 종류에 상관없이 모든 팩은 같은 개수의 사탕을 담아야 한다.
  • 각 종합 팩 안에서 모든 맛의 사탕 개수는 서로 같아야 한다.
  • 종합 팩이 적어도 하나 있어야 한다.
  • 각 맛마다 그 맛의 단일맛 팩이 적어도 하나 있어야 한다.

캔디는 만들 수 있는 서로 다른 좋은 포장이 몇 가지인지 궁금하다. 두 좋은 포장은 단일맛 팩의 개수, 종합 팩의 개수, 또는 팩 하나당 사탕 개수 중 하나라도 다르면 서로 다른 것으로 본다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 줄로 주어진다. 첫째 줄에는 맛의 개수를 나타내는 정수 FF (2≤F≤1052 \le F \le 10^5)가 주어진다. 둘째 줄에는 각 맛의 사탕 개수를 나타내는 FF개의 정수 CiC_i (1≤Ci≤1091 \le C_i \le 10^9)가 주어진다.

마지막 테스트 케이스 다음에는 00 하나만 있는 줄이 주어진다.

출력

각 테스트 케이스마다 위 규칙에 따라 만들 수 있는 서로 다른 좋은 포장의 개수를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    3
    15 33 21
    2
    1 1
    2
    2 2
    2
    3 3
    3
    1000000000 1000000000 1000000000
    0
    
    예상 출력
    4
    0
    0
    1
    832519396
    
  2. 예제 2

    입력
    2
    6 6
    0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3
    30 42 18
    0
    
    예상 출력
    7