Verilən cəmi aşağıdakı kimi yazırıq:
Möhtərizədəki cəm 2^n-ə bərabərdir. Əgər Nyutonun binomu formulunda
də a = b = 1 qoysaq, o zaman (1 + 1)^n = \sum_{i=0}^n{C_n^i1^i1^{n-i}} və ya
Qalan cəmi hesablayırıq:
Beləliklə, cavab 2^n + n \cdot 2^{n - 1} = (n + 2) \cdot 2^{n - 1}.
Nümunə
n = 3 üçün cavabı hesablayaq. Birbaşa hesablama zamanı:
Formula ilə hesablandıqda: 5 \cdot 2^2 = 20.
Alqoritmin reallaşdırılması
Verilmiş dəyərini oxuyuruq.
scanf("%lld", &n);Cavabı hesablayır və çap edirik.
res = (1LL << (n - 1)) * (n + 2);
printf("%lld\n", res);Alqoritmin reallaşdırılması – funksiya
Nəticələri yadda saxlamaq üçün massiv elan edirik: dp[n][k] = C_n^k.
int dp[31][31];Cnk funksiyası binominal əmsalın C_n^k dəyərini hesablayır.
int Cnk(int n, int k)
{
if (n == k) return 1;
if (k == 0) return 1;
if (dp[n][k] != -1) return dp[n][k];
return dp[n][k] = (Cnk(n - 1, k - 1) + Cnk(n - 1, k)) % 9929;
}Proqramın əsas hissəsi. Verilmiş dəyərini oxuyuruq.
scanf("%d", &n);
memset(dp, -1, sizeof(dp));Verilən cəmi hesablayırıq.
res = 0;
for (i = 0; i <= n; i++)
res += (i + 1) * Cnk(n, i);Cavabı çıxarırıq.
printf("%d\n", res);Python reallaşdırılması – comb funksiyası
import mathVerilən dəyərini oxuyuruq.
n = int(input())Verilən cəmi hesablayırıq. Binominal əmsalı hesablamaq üçün daxil edilmiş comb funksiyasından istifadə edirik.
res = 0
for i in range(n + 1):
res += (i + 1) * math.comb(n, i)Cavabı çıxarırıq.
print(res)Python reallaşdırılması – funksiya
Cnk funksiyası binominal əmsalın C_n^k dəyərini hesablayır.
def Cnk(n, k, dp):
if n == k: return 1
if k == 0: return 1
if dp[n][k] != -1: return dp[n][k]
dp[n][k] = Cnk(n - 1, k - 1, dp) + Cnk(n - 1, k, dp)
return dp[n][k]Proqramın əsas hissəsi. Verilən dəyərini oxuyuruq.
n = int(input())İkiölçülü siyahının bütün elementlərini dəyəri ilə başlatırıq. Siyahını nəticələri yadda saxlamaq üçün istifadə edirik: dp[n][k] = C_n^k.
dp = [[-1 for _ in range(31)] for _ in range(31)]Verilən cəmi hesablayırıq.
res = 0
for i in range(n + 1):
res += (i + 1) * Cnk(n, i, dp)Cavabı çıxarırıq.
print(res)Python reallaşdırılması – formula
Verilən dəyərini oxuyuruq.
n = int(input())Formulaya əsasən cavabını hesablayırıq.
res = (1 << (n - 1)) * (n + 2)Cavabı çıxarırıq.
print(res)