Cặp dương

Xem PDF

Điểm: 800 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy số nguyên \(a_1,a_2,\ldots,a_n\).

Đếm số lượng cặp chỉ số \((i,j)\) với \(1 \leq i < j \leq n\) sao cho \(a_i\times a_j\) là một số nguyên dương

Input

  • Dòng 1: \(n\) (\(n \leq 3\times 10^5\));
  • Dòng 2: \(a_1,a_2,\ldots,a_n\) (\(-10^6 \leq a_i \leq 10^6\)).

Output

  • Số cặp thỏa mãn yêu cầu đề bài.

Scoring

  • Subtask 1 (40%): \(n \leq 10^3\);
  • Subtask 2 (60%): Không ràng buộc gì hơn.

Example

Test 1
Input
5
-1 2 3 4 -5
Output
4

Bình luận


  • 0
    tuankaka    4:54 p.m. 16 Tháng 2, 2024

    HELP
    ai rảnh coi giúp em bài này em làm cách dưới sao lại bị lỗi OverFlowError ạ em cảm ơn:
    import math
    n = int(input())
    lit = list(map(int,(input().split())))
    soam = list(filter(lambda x: x < 0, lit))
    count1= len(soam)//2
    soduong = list(filter(lambda x: x > 0, lit))
    count2 = len(soduong)
    gt = math.factorial(count2)
    count3 = gt/2*math.factorial(count2-2)
    print(count1+int(count3))


    • 1
      doanngocgiahung2013    3:52 p.m. 11 Tháng 7, 2024

      Lỗi OverflowError xảy ra trong trường hợp bạn tính toán với số rất lớn, đặc biệt là khi sử dụng math.factorial với số lớn, bởi vì giai thừa của một số nguyên lớn sẽ tạo ra một số rất lớn.


      • 0
        Thiện2011    9:01 p.m. 25 Tháng 3, 2024

        import math

        n = int(input())
        lit = list(map(int, input().split()))

        soam = list(filter(lambda x: x < 0, lit))
        count1 = len(soam) // 2

        soduong = list(filter(lambda x: x > 0, lit))
        count2 = len(soduong)

        if count2 >= 2:
        count3 = math.factorial(count2) // (2 * math.factorial(count2 - 2))
        else:
        count3 = 0

        result = count1 + count3
        print(result)

        5 bình luận nữa