$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Замена итерације формулом

Један од важних савета за побољшање сложености алгоритама је тај да не терамо рачунар да врши дуготрајна израчунавања која се могу извршити и “пешке”, применом математике. Наиме, често се одређене вредности израчунавају применом итеративних поступака. На пример, збир елемената неког низа израчунавамо додавањем једног по једног елемента. То даје тражени резултат, али и одузима неко време. Постоје ситуације када су елементи који се обрађују правилни и када се коначан резултат може добити применом неке задате формуле, без примене итеративног поступка. На пример, ако знамо да треба сабрати првих \(n\) елемената низа \(1, 2, 3, \ldots, n\), нема потребе да примењујемо итеративни поступак сабирања чија је сложеност \(O(n)\), већ је довољно да у времену \(O(1)\) применимо Гаусову формулу на основу које знамо да је

\[1 + 2 + \ldots + n = \frac{n(n+1)}{2}\]

Још неке формуле се често могу употребити за смањење сложености (али и за саму анализу сложености), па ћемо их у наставку навести.

Аритметички и геометријски низ

Сличне формуле које су нам корисне су формуле за \(n\)-ти члан и збир првих \(n\) елемената аритметичког низа \(a_0\), \(a_1 = a_0 + d\), \(a_2 = a_0 + 2d\), \(\ldots\).

\[a_i = a_0 + id, \qquad \sum_{i=0}^{n} a_i = \frac{(n+1)(a_0 + a_n)}{2},\]

као и за \(n\)-ти члан и збир првих \(n\) елемената геометријског низа \(a_0\), \(a_1 = a_0\cdot q\), \(a_2 = a_0 \cdot q^2\), \(\ldots\)

\[a_i = a_0\cdot q^i, \qquad \sum_{i=0}^{n} a_i = a_0\frac{1-q^{n+1}}{1-q}.\]

Збирови степена

\[1^2 + 2^2 + \ldots + n^2 = \sum_{k=1}^n k^2 = \frac{n\cdot (n + \frac{1}{2}) \cdot (n+1)}{3}\]

\[1^3+2^3+\ldots + n^3 = \sum_{k=1}^n k^3 = \left(\frac{n(n+1)}{2}\right)^2.\]

Комбинаторика

  • Број начина да се из скупа од \(n\) различитих бројева извуку два броја \(a < b\) је \(\binom{n}{2} = \frac{n(n-1)}{2}\).
  • Број начина да се из скупа од \(n\) различитих бројева извуку три броја \(a < b < c\) је \(\binom{n}{3} = \frac{n(n-1)(n-2)}{3\cdot 2}\).

Замена итерације формулом — задаци

Спортске припреме

За овај задатак можете видети решење
покушало: 780, решило: 61%

N-ти дан тренинга

покушало: 803, решило: 75%

Аритметички троугао

За овај задатак можете видети решење
покушало: 892, решило: 57%

Аритметички квадрат

покушало: 857, решило: 38%

Број подстрингова који почињу и завршавају са 1

За овај задатак можете видети решење
покушало: 405, решило: 90%

Двојке и тројке дељиве са 3

покушало: 277, решило: 59%

Недостајући број

За овај задатак можете видети решење
покушало: 812, решило: 70%

Број дељивих у интервалу

За овај задатак можете видети решење
покушало: 899, решило: 76%

Хлебови

покушало: 540, решило: 87%

Дељиви око броја

покушало: 753, решило: 90%

Максимални принос

За овај задатак можете видети решење
покушало: 534, решило: 77%

Растављања на збир узастопних

За овај задатак можете видети решење
покушало: 471, решило: 81%

Питагорине тројке

За овај задатак можете видети решење
покушало: 228, решило: 87%

Највећи заједнички делилац

За овај задатак можете видети решење
покушало: 539, решило: 89%