4265 - perechiAB: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4265/perechiab 4265 - perechiAb] ---- == Cerinţa == Se dă un șir v1, v2, …, vn de numere naturale nenule și de asemenea se dau două numere naturale nenule A și B. Să se determine numărul perechilor (vi , vj) cu i < j și A ≤ vi + vj ≤ B. == Date de intrare == Programul citește de la tastatură numărul n, apoi șirul de n numere naturale, separate prin spații, iar la final se citesc numerele naturale nenule A și B. == Da...)
 
Fără descriere a modificării
Linia 36: Linia 36:


print(count)
print(count)
=== Rezolvare ver 1.1 ===
def validate_input(n, v, A, B):
    if n < 3 or n > 160000:
        print("n nu respecta restricțiile impuse")
        return False
    for i in range(n):
        if v[i] < 1 or v[i] > 1000000000:
            print("valorile din v nu respecta restricțiile impuse")
            return False
    if A < 1 or B > 2000000000 or A > B:
        print("A si B nu respecta restricțiile impuse")
        return False
    return True
def numar_perechi(n, v, A, B):
    count = 0
    for i in range(n-1):
        for j in range(i+1, n):
            if A <= v[i] + v[j] <= B:
                count += 1
    return count
def read_input():
    n = int(input())
    v = list(map(int, input().split()))
    A, B = map(int, input().split())
    if not validate_input(n, v, A, B):
        exit()
    return n, v, A, B
if __name__ == '__main__':
    n, v, A, B = read_input()
    print(numar_perechi(n, v, A, B))


</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 17 aprilie 2023 19:35

Sursa: 4265 - perechiAb


Cerinţa

Se dă un șir v1, v2, …, vn de numere naturale nenule și de asemenea se dau două numere naturale nenule A și B. Să se determine numărul perechilor (vi , vj) cu i < j și A ≤ vi + vj ≤ B.

Date de intrare

Programul citește de la tastatură numărul n, apoi șirul de n numere naturale, separate prin spații, iar la final se citesc numerele naturale nenule A și B.

Date de ieșire

Programul va afișa pe ecran numărul de perechi care îndeplinesc condițiile cerute.

Restricţii şi precizări

  • 3 ≤ n ≤ 160.000
  • 1 ≤ A ≤ B ≤ 2.000.000.000
  • 1 ≤ vi ≤ 1.000.000.000

Exemplu

Intrare
5
1 2 3 4 5
7 10
Ieșire
4

Rezolvare

Rezolvare ver. 1

# 4265 - perechiAB

n = int(input())
v = list(map(int, input().split()))
A, B = map(int, input().split())

count = 0
for i in range(n-1):
    for j in range(i+1, n):
        if A <= v[i] + v[j] <= B:
            count += 1

print(count)

=== Rezolvare ver 1.1 ===

def validate_input(n, v, A, B):
    if n < 3 or n > 160000:
        print("n nu respecta restricțiile impuse")
        return False
    for i in range(n):
        if v[i] < 1 or v[i] > 1000000000:
            print("valorile din v nu respecta restricțiile impuse")
            return False
    if A < 1 or B > 2000000000 or A > B:
        print("A si B nu respecta restricțiile impuse")
        return False
    return True

def numar_perechi(n, v, A, B):
    count = 0
    for i in range(n-1):
        for j in range(i+1, n):
            if A <= v[i] + v[j] <= B:
                count += 1
    return count

def read_input():
    n = int(input())
    v = list(map(int, input().split()))
    A, B = map(int, input().split())
    if not validate_input(n, v, A, B):
        exit()
    return n, v, A, B

if __name__ == '__main__':
    n, v, A, B = read_input()
    print(numar_perechi(n, v, A, B))