1

Тема: задача 1210 з e-olymp

Ось посилання на задачку - https://www.e-olymp.com/uk/problems/1210
Не знав яку формулу взяти для її розв'язання. Мені здається, що ми проходили цю тему з математики, але як не стараюсь - нічого не можу згадати.
Взяв з вікіпедії - https://wikimedia.org/api/rest_v1/media … 424aa9c82d
Код для обчислення по цій формулі:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    long int n, a, i = 1, y = 0, out;
    cin >> n >> a;
    out = (n * pow(a, n + 2) - (n + 1) * pow(a, n + 1) + a) / pow((a - 1), 2);
    cout << out;
    return 0;
}

Ті значення, що задані у умові задачі для перевірки обчислює правильно, але на e-olymp дає тільки 69% правильних результатів.
Відмінність формули у тому, що у задачі під сигмою і = 1, а у формулі 1 = 0. Можливо у цьому й проблема. Якщо так, то як правильно записати формулу? Є ще припущення, що помилки через те що p (в програмі a) не може = 1.

2

Re: задача 1210 з e-olymp

Це точно не шкільна формула. Задача, як я розумію, має бути на цикли; але якщо хочете користуватися цією формулою - то будь ласка, лише зверніть увагу на те, що там після коми написано.

Подякували: Eff1c1

3

Re: задача 1210 з e-olymp

*FACEPALM*  не те скопіював.

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    long long int n, a, out;
    cin >> n >> a;
    out = (n * pow(a, n + 2) - (n + 1) * pow(a, n + 1) + a) / pow((a - 1), 2);
    cout << out;
    return 0;
}
koala написав:

Це точно не шкільна формула. Задача, як я розумію, має бути на цикли; але якщо хочете користуватися цією формулою - то будь ласка, лише зверніть увагу на те, що там після коми написано.

Щось не можу зрозуміти за яку кому ви говорите  *SCRATCH*
А можете нагадати мені шкільну формулу, я просто щось ніяк не можу згадати...

Eff1c написав:

Мені здається, що ми проходили цю тему з математики, але як не стараюсь - нічого не можу згадати.

Ще хотів би дізнатися детальніше про варіант з циклами... Буду дуже вдячний.

4

Re: задача 1210 з e-olymp

Eff1c написав:

Щось не можу зрозуміти за яку кому ви говорите

У формулі за вашим посиланням рівно одна кома, після дробу. От про нею і кажу.

Eff1c написав:

А можете нагадати мені шкільну формулу, я просто щось ніяк не можу згадати...

Я мав на увазі, що в школі цю формулу не вивчають, швидше за все, то вам лише здається, що ви проходили її. Хоча, звісно, є ймовірність, що у вас був якийсь особливий учитель.

Eff1c написав:

Ще хотів би дізнатися детальніше про варіант з циклами... Буду дуже вдячний.

Чекайте. То ви не знаєте, як обчислювати суму в циклі?

Подякували: Eff1c1

5

Re: задача 1210 з e-olymp

koala написав:

У формулі за вашим посиланням рівно одна кома, після дробу. От про нею і кажу.

Я зрозумів. Але не вкажу ж я в програмці p != 1. Воно просто-на-просто ті значення не обчислить і всеодно виб'є помилку. Виходить як не крути - потрібна інша формула.

koala написав:

Чекайте. То ви не знаєте, як обчислювати суму в циклі?

Знаю. Але це не просто сума в циклі як ось така - https://wikimedia.org/api/rest_v1/media … de1a7f91ac    Тут ще якесь множення на а в і степені.

6

Re: задача 1210 з e-olymp

От просто цікаво: ви взагалі з нуля програмування без вчителя і підручника "для чайників" учите?

Eff1c написав:

Але не вкажу ж я в програмці p != 1.

if(p!=1){
/*варіант де p!=1*/
}else {
/*варіант де p==1*/
}
Eff1c написав:

Але це не просто сума в циклі як ось така

Це якраз САМЕ ТАКА сума. У вас є формула для ai, яка містить множення, степінь, ділення і ще казна-що, яка різниця? Ви просто обчислюєте цю формулу, знаходите таким чином ai і додаєте до загальної суми (акумулятора).

Подякували: Eff1c1

7

Re: задача 1210 з e-olymp

koala написав:

Це якраз САМЕ ТАКА сума. У вас є формула для ai, яка містить множення, степінь, ділення і ще казна-що, яка різниця? Ви просто обчислюєте цю формулу, знаходите таким чином ai і додаєте до загальної суми (акумулятора).

Дякую. Нарешті до мене дійшло...

koala написав:

От просто цікаво: ви взагалі з нуля програмування без вчителя і підручника "для чайників" учите?

Я вчу c++ у коледжі... Там дуже корява програма (принаймні мені так здається). Вдома тільки розв'язую ось такі задачкі, які нам дають на практичні. Весь інший час - вчу python. Ще не знаю точно чи хочу я в майбутньому програмувати на с++. python мені більше подобається, але мушу вчити с.