Olimpiada masalalari



Yüklə 0,83 Mb.
səhifə24/34
tarix30.03.2023
ölçüsü0,83 Mb.
#91326
1   ...   20   21   22   23   24   25   26   27   ...   34
Olimpiada masalalari





3.Takrorlanuvchi o‘rin almashtirishlar



159-misol. "kamalak” so‘zidagi harflar yordamida har biri yettita harfdan iborat bo‘lgan nechta so‘z tuzish mumkin?
Oldingi masaladan farqli o‘laroq, bu masaladagi so‘zning hamma harflari ham har xil emas (oldingi masalada hamma raqamlar har xil edi). Agar hamma harflar har xil bo‘lganda edi, u holda ulardan 7! ta har xil so‘z tuzish mumkin edi.
Lekin harflarning o‘rnini almashtirishda har doim ham yangi so‘z hosil bo‘lavermaydi. Ko‘rinib turibdiki, "k" harfini o‘zaro “a" harfi bilan almashtirish yangi so‘z bermaydi. U holda ko‘rilayotgan masalaning maqsadi natijada bir xil so‘z hosil bo‘ladigan o‘rin almashtirishlarning sonini aniqlashdan iborat bo‘lib qoladi. Natijada bir xil so‘z hosil bo‘ladigan “k" harfini o‘zaro o‘rin almashtirishlar soni 2! ga teng. Bunday o‘rin almashtirishning har biridan so‘ng "a" harfi 3! usul bilan o‘rin almashtirilishi mumkin. Ko‘paytma qoidasini qo‘llagan holda, har bir so‘z marta takrorlanishining guvohi bo‘lamiz, u holda "kamalak " so‘zidan tuzish mumkin bo‘lgan har xil so‘zlar soni ga teng.
Umuman olganda, bizga n ta elementdan tashkil topgan, ulardan a element -n1 marta, b - n2 marta, c - n3 marta, … takrorlanadigan (bu yerda M = {a, b, c, ...} to‘plam berilgan bo‘lsin.
Unga kiradigan elementlarning berilgan takrorlanish soni orqali o‘rin almashtirishlar miqdorini topish kerak.
Bu holda o‘rin almashtirishlar soni quyidagi formula orqali topiladi:

bu yerda, Agar u holda bu formula quyidagi ko‘rinishga kiradi:

#include
#include
using namespace std;
int Fakt(int n)
{
int S=1;
for (int i = 1; i <= n; i++)
S *= i;
return S;
}
int main()
{
int S1, S2, S, n, n1, k;
cout << "Elementlar sonini kiriting: "; cin >> n;
cout << "Bittadan ortiq qatnashgan elementlar qancha: "; cin >> n1;
S1 = Fakt(n);
cout << S1 << endl;
for (int i = 1; i <= n1; i++)
{
cin >> k;
S2 = Fakt(k);
S1 = S1 / S2;
}
cout << "S=" << S1 << endl;
return 0;
}



Yüklə 0,83 Mb.

Dostları ilə paylaş:
1   ...   20   21   22   23   24   25   26   27   ...   34




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin