3248 - subimp2
Cerința[edit | edit source]
Se citește un număr natural n
. Calculați și afișați câte din submulțimile mulțimii {1, 2, ..., n}
sunt formate dintr-un număr impar de elemente.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n
.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul de submulțimi formate din număr impar de elemente.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 60
Exemplu:[edit | edit source]
Intrare
4
Ieșire
8
Explicație[edit | edit source]
Submulțimile mulțimii {1, 2, ..., n}
care sunt formate dintr-un număr impar de elemente sunt {1}
, {1,2,3}
, {1,2,4}
, {1,3,4}
, {2}
, {2,3,4}
, {3}
, {4}
.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3"> def count_odd_subsets(n):
dp = [[0 for _ in range(n + 1)] for _ in range(n + 1)]
for i in range(1, n + 1): dp[i][0] = 0
for i in range(1, n + 1): for j in range(i + 1): if j == 0: dp[i][j] = dp[i - 1][j]
else: dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
odd_subsets = 0 for j in range(n + 1): if j % 2 == 1: odd_subsets += dp[n][j]
return odd_subsets
def main():
n = int(input())
odd_subsets_count = count_odd_subsets(n) print(odd_subsets_count)
if __name__ == "__main__":
main()
</syntaxhighlight>