Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Dwusilnia w C++


Zad. 2. Napisz funkcję, która dla nieujemnej liczby n, takiej, że

$$0\leq n\leq 30$$

wyznaczy dwusilnię.

Rozwiązanie. 

Dwusilnię dla dowolnej liczby naturalnej n wyznaczamy według wzoru:

$$n!! = \left\{\begin{matrix} 1 &,\ dla\ n = 0\\ n \cdot (n-2) \cdot (n-4) \cdot ... \cdot 4 \cdot 2 &,\ dla\ n\; parzystego\; dodatniego \\n \cdot (n-2) \cdot (n-4) \cdot ... \cdot 3 \cdot 1 &,\ dla\; n\; nieparzystego\end{matrix}\right.$$

Dla przykładu policzmy:

$$5!! = 5 \cdot 3 \cdot 1 = 15$$

$$6!! = 6 \cdot 4 \cdot 2 = 48$$

Dla liczby parzystej n liczymy iloczyn wszystkich liczb parzystych dodatnich niewiększych od tej liczby, natomiast dla nieparzystej iloczyn wszystkch liczb naturalnych nieparzystych niewiększych od n.

Rozwiązanie

 
#include <iostream>
using namespace std;

long long dwusilnia(unsigned int n)
{
	long long ds = 1; //zmienna przechowująca kolejne mnożenia

	for(;n>1;n-=2)
		ds*=n;

	return ds; 
}

int main()
{
	unsigned int n;

	cout<<"Podaj liczbę: ";
	cin>>n;
	cout<<"Dwusilnia z liczby "<<n<<" wynosi "<<dwusilnia(n)<<endl;

	
	return 0;
}