Ikkinchisi, ichki siklni 0 dan j1 gacha tashkil etish kerak. Nimaga ? Chunki har bir qatorda uning qator nomeridan bitta ko‘p element bo‘lishi kerak. Nolinchi qatorda 1 ta element, 1-da 2 ta element, 2-da uchta element va h.k, n- qatorda n+1 ta element bo‘ladi?
Buning sababi, elementlar noldan boshlab nomerlanadi.
#include
#include
using namespace std;
int Almashtirishlar(int n, int k)
{
int S = 1;
for (int i = 1; i <= k; i++)
S *= (n - k + i);
return S;
}
int Fakt(int n)
{
int S=1;
for (int i = 1; i <= n; i++)
S *= i;
return S;
}
int main()
{
long S;
int n;
cout << "n="; cin >> n;
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= i; j++)
{
S = Almashtirishlar(i, j) / Fakt(j);
cout << S << " ";
}
cout << endl;
}
return 0;
}
168-misol. 52 ta kartadan iborat kolodadan 10 ta karta tanlab olindi. Buni nechta har xil usul bilan amalga oshirish mumkin? Nechta holatda tanlangan kartalar ichida aqqalli bitta tuz bo‘ladi? Qaysi hollarda aniq bitta tuz bo‘ladi? Qaysi hollarda aniq 4 ta tuz bo‘ladi?
Kartalarning har doim tanlanishi 52 ta to‘plamdan 10 tasini tanlash degani. Bu ta usul bilan amalga oshirilishi mumkin.
Tanlangan kartalar ichida aqqali bitta tuz bo‘ladigan usullar sonini topish bir qarashda qiyinroq - buning uchun aniq bitta, aniq ikkita, aniq uchta, aniq to‘rtta tuz bo‘ladigan hollarni ko‘rib chiqish kerak. Avvalo tanlangan kartalar ichida bitta ham tuz bo‘lmaydigan hollarni topish osonroq, qolganlarida chunki aqalli bitta tuz bo‘ladi. Lekin tanlangan kartalar ichida bitta ham tuz bo‘lmasa, u holda 52 ta kartadan emas, 48 (tuzlardan tashqari barcha kartalar) tasidan tanlash amali bajariladi, shuning uchun bunday tanlovlar soni ga teng. Demak, hollarda aqalli bitta tuz bo‘ladi.
Nechta holda aniq bitta tuz bo‘ladigan hollarni aniqlash uchun, kartalarni tanlash jarayonini ikkiga ajratamiz – avvalo to‘rtta tuzdan bittasini tanlab olamiz- buni ta usul bilan amalga oshirish mumkin. So‘ngra, qolgan 48 ta kartadan 9 tasini tanlab olamiz, buni esa usul bilan amalga oshirish mumkin.
Ko‘paytma qoidasiga ko‘ra, butun tanlovni usul orqali olishimiz mumkin. Va nihoyat, to‘rtta tuzdan iborat bo‘lgan tanlovni usul bilan amalga oshirish mumkin - buning uchun 4 ta tuzni olib, yana 48 ta kartadan yana 6 tasini tanlash kerak.
169-misol. Shaxmat doskasining 32 ta qora katagiga nechta usul bilan 12 ta oq va 12 ta qora shashkani qo‘yish mumkin?
#include
#include
using namespace std;
long Almashtirishlar(int n, int k)
{
long S = 1;
for (int i = 1; i <= k; i++)
S *= (n - k + i);
return S;
}
long Fakt(int n)
{
long S=1;
for (int i = 1; i <= n; i++)
S *= i;
return S;
}
int main()
{
long S, S1, S2;
S1 = Almashtirishlar(32, 12) / Fakt(12);
cout << S1 << endl;
S2 = Almashtirishlar(12, 20) / Fakt(12);
cout << S2 << endl;
cout << S1*S2< return 0;
}
172. Toq raqamlardan jami nechta uch xonali son tuzish mumkin, bunda har bir raqamdan faqatgina bir marta foydalanish kerak.
#include
#include
using namespace std;
long Almashtirishlar(int n, int k)
{
long S = 1;
for (int i = 1; i <= k; i++)
S *= (n - k + i);
return S;
}
int main()
{
int n, k;
long S;
cout << "Toq sonlar soni: "; cin >> n;
cout << "Necha xonali son hosil qilish kerak: "; cin >> k;
S = Almashtirishlar(n, k);
cout << "Jami " << S << " ta " << k << " xonali son hosil qilish mumkin";
return 0;
}
Masala. Nyuton binomi formulasini yoyishni ekranga chiqaring
#include
#include
using namespace std;
int Almashtirishlar(int n, int k)
{
int S = 1;
for (int i = 1; i <= k; i++)
S *= (n - k + i);
return S;
}
int Fakt(int n)
{
int S = 1;
for (int i = 1; i <= n; i++)
S *= i;
return S;
}
int main()
{
int a, b, n;
cout << "n="; cin >> n;
cout << "a="; cin >> a;
cout << "b="; cin >> b;
cout << a << "^" << n << "+";
for (int i = 1; i <= n; i++)
{
cout << Almashtirishlar(n, i) / Fakt(i) << "*" << a << "^" << n - i << "*" << b << "^" << i << "+";
}
cout << b << "^" << n << "=" << pow((a + b), n);
return 0;
}
Do'stlaringiz bilan baham: |