Bài tập về nhà

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Clang, Clang++, Cobol, D, Groovy, Haskell, JS, Lua, Node JS, ObjectiveC, Pascal, Prolog, Pypy 3, Python, Scala
Điểm: 1700 (p) Thời gian: 0.5s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sau một ngày sinh nhật mệt mỏi, ngu_dot quyết định leo lên giường để đi ngủ. Bỗng cậu chợt nhớ ra mình vẫn chưa làm bài tập về nhà của lớp Coding 69420 dành cho trẻ sơ sinh. Cậu liền bật dậy và làm nhưng bài lại quá khó đối với cậu.

Nội dung bài

Trong một dãy \(a\) gồm \(n\) phần tử, một cặp \((i, j)\) được gọi là cặp số chính phương nếu nó thỏa mãn:

  • \(1 \le i < j \le n\).
  • \(a_i \times a_j\) là một số chính phương.

Cho dãy \(a\) gồm \(n\) phần tử, hãy đếm số lượng cặp số chính phương \((i, j)\) của dãy \(a\).

Một bài dành cho trẻ sơ sinh như vậy mà ngu_dot giải cũng không được, bạn hãy giúp cậu ấy nhé.

Input, Output and Subtask

Input

  • Số nguyên dương \(n\) \((2 \le n \le 10^5)\).
  • Dãy \(a\) gồm \(n\) phần tử \(a_1, a_2, ..., a_n\) \((1 \le a_i \le 10^6)\).

Output

  • In ra kết quả thỏa mãn.

Scoring

  • Subtask \(1\) \((30\%)\): \(2 \le n \le 10^3\).
  • Subtask \(2\) \((70\%)\): Không giới hạn gì thêm.

Example

Input

6 
4 8 2 9 2 4

Output

6
Note
  • Có tổng cộng \(6\) cặp số chính phương \((i, j)\)\((1, 4), (1, 6), (2, 3), (2, 5), (3, 5), (4, 6)\).

Bình luận

Không có bình luận nào.