3248 - subimp2
Cerința
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
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran numărul de submulțimi formate din număr impar de elemente.
Restricții și precizări
1 ≤ n ≤ 60
Exemplu:
Intrare
4
Ieșire
8
Explicație
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
<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>