3234 - Pavare 3: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
Pagină nouă: Se dă un dreptunghi cu lungimea egală cu 2N centimetri și lățimea egală cu 3 centimetri. ==Cerința== Să se determine numărul M al pavărilor distincte cu dale dreptunghiulare care au lungimea egală cu un centimetru și lățimea egală cu 2 centimetri. ==Date de intrare== Fișierul de intrare pavare.in conține pe prima linie numărul natural nenul N, reprezentând jumătatea lungimii dreptunghiului. ==Date de ieșire== Fișierul de ieșire pavare.out va conțin...
 
Mraa (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 21: Line 21:
11
11
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python3" line="1">
MOD = 1000000007
MOD = 1000000007


def numar_pavari(N):
def numar_pavari(N):
    # Inițializăm lista dp cu 0-uri
    dp = [0] * (N + 1)


    # Prima poziție este 1, deoarece există o singură modalitate de a avea dreptunghiul nefragmentat
  # Inițializăm lista dp cu 0-uri
    dp[0] = 1
  dp = [0] * (N + 1)
 
  # Prima poziție este 1, deoarece există o singură modalitate de a avea dreptunghiul nefragmentat
    # Calculăm numărul de modalități
  dp[0] = 1
    for i in range(1, N + 1):
  # Calculăm numărul de modalități
        dp[i] = (3 * dp[i - 1]) % MOD
  for i in range(1, N + 1):
        if i >= 2:
      dp[i] = (3 * dp[i - 1]) % MOD
            dp[i] = (dp[i] + dp[i - 2]) % MOD
      if i >= 2:
 
          dp[i] = (dp[i] + dp[i - 2]) % MOD
    return dp[N]
  return dp[N]


if __name__ == "__main__":
if __name__ == "__main__":
    with open("pavare.in", "r") as f:
        N = int(f.readline())
    rezultat = numar_pavari(N)


    with open("pavare.out", "w") as g:
  with open("pavare.in", "r") as f:
        g.write(str(rezultat) + "\n")
      N = int(f.readline())
python pavare.py
  rezultat = numar_pavari(N)
  with open("pavare.out", "w") as g:
      g.write(str(rezultat) + "\n")
</syntaxhighlight>

Latest revision as of 18:31, 11 January 2024

Se dă un dreptunghi cu lungimea egală cu 2N centimetri și lățimea egală cu 3 centimetri.

Cerința[edit | edit source]

Să se determine numărul M al pavărilor distincte cu dale dreptunghiulare care au lungimea egală cu un centimetru și lățimea egală cu 2 centimetri.

Date de intrare[edit | edit source]

Fișierul de intrare pavare.in conține pe prima linie numărul natural nenul N, reprezentând jumătatea lungimii dreptunghiului.

Date de ieșire[edit | edit source]

Fișierul de ieșire pavare.out va conține pe prima linie numărul natural nenul, reprezentând numărul modalităților de a pava dreptunghiul.

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

1 ≤ n ≤ 100 ==Exemplu==: pavare.in

2 pavare.out

11

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> MOD = 1000000007

def numar_pavari(N):

  # Inițializăm lista dp cu 0-uri
  dp = [0] * (N + 1)
  # Prima poziție este 1, deoarece există o singură modalitate de a avea dreptunghiul nefragmentat
  dp[0] = 1
  # Calculăm numărul de modalități
  for i in range(1, N + 1):
      dp[i] = (3 * dp[i - 1]) % MOD
      if i >= 2:
          dp[i] = (dp[i] + dp[i - 2]) % MOD
  return dp[N]

if __name__ == "__main__":

  with open("pavare.in", "r") as f:
      N = int(f.readline())
  rezultat = numar_pavari(N)
  with open("pavare.out", "w") as g:
      g.write(str(rezultat) + "\n")

</syntaxhighlight>