3234 - Pavare 3: Difference between revisions
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... |
|||
(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 | |||
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__": | 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> |
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>