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

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

완전 부분배열

면접 대비

메모리 제한1024 MB

요약
배열의 값이 -100 이상 100 이하일 때, 원소 합이 완전제곱수인 모든 연속 부분배열의 개수를 센다.
난이도

보통10점 중 6점

유형
누적 합, 해시맵, 수학, 구현
정답자
아직 제출이 없습니다

문제

Cristobal은 N개의 (음수일 수도 있는) 정수로 이루어진 배열을 가지고 있다. 배열의 i번째 정수는 Ai이다. Cristobal의 배열에서 연속하고 비어 있지 않은 부분배열의 합이 완전제곱수이면 그 부분배열을 완전하다고 한다. 완전제곱수는 음이 아닌 정수를 자기 자신과 곱한 수이다. 예를 들어 처음 다섯 개의 완전제곱수는 0, 1, 4, 9, 16이다.

완전한 부분배열은 몇 개인가? 두 부분배열의 시작 인덱스나 끝 인덱스가 다르면, 두 부분배열이 같은 값을 같은 순서로 담고 있더라도 서로 다른 부분배열이다.

입력

입력의 첫 줄에는 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 따른다. 각 테스트 케이스의 첫 줄에는 정수 N이 주어진다. 둘째 줄에는 Cristobal의 배열을 이루는 N개의 정수가 주어진다. i번째 정수는 Ai이다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 x는 테스트 케이스 번호(1부터 시작)이고 y는 완전 부분배열의 개수이다.

제한

  • 1 ≤ T ≤ 100.
  • 모든 i에 대해 -100 ≤ Ai ≤ 100.

힌트

예제 1에는 합이 22인 [2 2] 하나의 완전 부분배열이 있다.

예제 2에는 세 개의 완전 부분배열이 있다:

  • 합이 32인 [9].
  • 합이 12인 [1].
  • 합이 102인 [30 30 9 1 30].

예제 3에는 아홉 개의 완전 부분배열이 있다:

  • 합이 22인 [4].
  • 합이 22인 [4 0].
  • 합이 22인 [4 0 0].
  • 합이 02인 [0].
  • 합이 02인 [0 0].
  • 합이 42인 [0 0 16].
  • 합이 02인 [0].
  • 합이 42인 [0 16].
  • 합이 42인 [16].

참고: 이 문제의 테스트 세트 2에는 인터프리터 언어나 느린 언어를 사용하지 않는 것을 권장한다.

예제1

  1. 예제 1

    입력
    3
    3
    2 2 6
    5
    30 30 9 1 30
    4
    4 0 0 16
    
    예상 출력
    Case #1: 1
    Case #2: 3
    Case #3: 9