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)
No edit summary
Line 21: Line 21:
11
11
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python3">
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>

Revision as of 17:37, 11 January 2024

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ține pe prima linie numărul natural nenul, reprezentând numărul modalităților de a pava dreptunghiul.

Restricții și precizări

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

2 pavare.out

11

Rezolvare

<syntaxhighlight lang="python3"> 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>