2031 - MDiv: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
Pagină nouă: Alexandru este elev în clasa a V-a și este foarte pasionat de informatică. Într-o zi acesta a descoperit un vector <code>A</code> cu <code>N</code> elemente și a început să se joace cu ele. Tatăl său, profesor de matematică, îi admiră ingeniozitatea și îi pune <code>M</code> întrebări de forma: “Câte valori din vectorul <code>A</code> sunt divizibile cu numărul <code>x</code>?”. = Cerința = Alexandru a rezolvat deja această problemă banală, așa că...
 
Raul (talk | contribs)
No edit summary
 
Line 34: Line 34:


=== Lipește codul aici ===
=== Lipește codul aici ===
1
<syntaxhighlight lang="python" line="1">
​n = 0
​n = 0
 
a = 0
a = 0
x = [0] * 1000002
 
r = [0] * 1000002
x = [0] * 1000002
m = 0
 
i = 0
r = [0] * 1000002
o = 0
 
s = 0
m = 0
mx = 0
 
with open("mdiv.intxt", "r") as fin:
i = 0
    n = int(fin.readline())
 
    for i in range(1, n+1):
o = 0
        a = int(fin.readline())
 
        if a > mx:
s = 0
            mx = a
 
        x[a] += 1
mx = 0
    m = int(fin.readline())
 
    for i in range(1, m+1):
with open("mdiv.in", "r") as fin:
        a = int(fin.readline())
 
        if r[a] == 0:
    n = int(fin.readline())
            if a != 1:
 
                for o in range(0, mx+1, a):
    for i in range(1, n+1):
                    r[a] += x[o]
 
            else:
        a = int(fin.readline())
                r[a] = n
 
        print(r[a])
        if a > mx:
</syntaxhighlight>
 
            mx = a
 
        x[a] += 1
 
    m = int(fin.readline())
 
    for i in range(1, m+1):
 
        a = int(fin.readline())
 
        if r[a] == 0:
 
            if a != 1:
 
                for o in range(0, mx+1, a):
 
                    r[a] += x[o]
 
            else:
 
                r[a] = n
 
        print(r[a])

Latest revision as of 13:59, 14 December 2023

Alexandru este elev în clasa a V-a și este foarte pasionat de informatică. Într-o zi acesta a descoperit un vector A cu N elemente și a început să se joace cu ele. Tatăl său, profesor de matematică, îi admiră ingeniozitatea și îi pune M întrebări de forma: “Câte valori din vectorul A sunt divizibile cu numărul x?”.

Cerința[edit | edit source]

Alexandru a rezolvat deja această problemă banală, așa că te provoacă și pe tine să o rezolvi!

Date de intrare[edit | edit source]

Fișierul de intrare mdiv.in conține pe prima linie numărul N. Pe a doua linie se află N numere naturale, reprezentând elementele vectorului. Pe a treia linie se află numărul M, iar pe următoarele M linii se află întrebările.

Date de ieșire[edit | edit source]

Fișierul de ieșire mdiv.out va conține M linii, pe linia i aflându-se răspunsul la întrebarea i.

Restricții și precizări[edit | edit source]

  • 1 ≤ N, M ≤ 100.000
  • fiecare valoare din vector, cât și fiecare întrebare ≤ 1.000.000 și sunt nenule.

Exemplu:[edit | edit source]

mdiv.in

8
2 4 2 6 1 9 1 5
3
2
5
3

mdiv.out

4
1
2

Explicație[edit | edit source]

Numerele divizibile cu 2 sunt 2, 4, 2, 6

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> ​n = 0 a = 0 x = [0] * 1000002 r = [0] * 1000002 m = 0 i = 0 o = 0 s = 0 mx = 0 with open("mdiv.intxt", "r") as fin:

   n = int(fin.readline())
   for i in range(1, n+1):
       a = int(fin.readline())
       if a > mx:
           mx = a
       x[a] += 1
   m = int(fin.readline())
   for i in range(1, m+1):
       a = int(fin.readline())
       if r[a] == 0:
           if a != 1:
               for o in range(0, mx+1, a):
                   r[a] += x[o]
           else:
               r[a] = n
       print(r[a])

</syntaxhighlight>