1

Тема: E-Olymp: Спроба розв'язати задачу №2860

https://www.e-olymp.com/uk/problems/2860
Розв'язав цю задачку на python

Прихований текст
q = input()
l = q.split()
n = int(l.pop(0))
m = int(l.pop(0))
sum = 0
while n <= m:
    sum = sum + n
    n = n + 1
print(sum)

Але як минулого разу хоч розв'язок був правильним, але при одному варіанті вводу програма обчислює все занадто довго і розв'язок не зараховався...
Переробив прогу на c++

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    int n, m, outp = 0;
    cin >> n;
    cin >> m;
    while (n <= m)
    {
        outp = outp + n;
        n = n + 1;
    }
    cout << outp; 
}

2 з 11 обчислень - неправильні.
В чому може бути проблема?

2 Востаннє редагувалося koala (28.09.2018 17:33:24)

Re: E-Olymp: Спроба розв'язати задачу №2860

Ну, я припускаю, що ви - не Гаусс. І навіть не Гаусс у 6 років. Я теж не Гаусс, і це нормально.
Але ж прогресії у школі ви ж мали вчити? Хоча б арифметичну?

Подякували: leofun01, Eff1c2

3

Re: E-Olymp: Спроба розв'язати задачу №2860

Ніхто не Гаусс, тільки Гаусс - Гаусс.
Там навіть прогресії знати не треба.
Дано: a, b.

https://i.ibb.co/tzmk2t9/eo2860-001.png
Потрібно знайти кількість зелених квадратів (розміром 1х1).
Розвязувати можна порізному.

Варіант 1:
https://i.ibb.co/vzYNPyD/eo2860-002.png
Формула: (b - a + 1) * (b + a) / 2

Варіант 2:
https://i.ibb.co/5GxDQTN/eo2860-003.png
Формула: ((b + 1) * b - (a - 1) * a) / 2

Подякували: Eff1c, FakiNyan, HetmanNet3

4 Востаннє редагувалося Eff1c (28.09.2018 20:28:45)

Re: E-Olymp: Спроба розв'язати задачу №2860

Дякую, але програма тепер чомусь видає ще менше правильних відповідей...
Спробував дві формули...

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    int b, a, outp;
    cin >> a;
    cin >> b;
    outp = ((b + 1) * b - (a - 1) * a) / 2;
    cout << outp; 
}

5 Востаннє редагувалося leofun01 (29.09.2018 19:20:19)

Re: E-Olymp: Спроба розв'язати задачу №2860

Eff1c написав:

Дякую, але програма тепер чомусь видає ще менше правильних відповідей...
Спробував дві формули...

...
Eff1c написав:
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    int b, a, outp;
    cin >> a;
    cin >> b;
    outp = ((b + 1) * b - (a - 1) * a) / 2;
    cout << outp; 
}

*FACEPALM*

Ще раз прочитайте умову зачачі. Зверніть увагу на розмір чисел a і b.

В мене все правильно.

Зображення

https://i.ibb.co/fSY3zbR/eo2860-result001.png

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

6 Востаннє редагувалося Eff1c (28.09.2018 21:32:52)

Re: E-Olymp: Спроба розв'язати задачу №2860

leofun01 написав:

Зверніть увагу на розмір чисел a і b

Дякую. Виправив і все працює)
Ps. До речі, мій варіант з циклом while теж запрацював, коли додав long.

7

Re: E-Olymp: Спроба розв'язати задачу №2860

мабуть зарано тобі олімпіадні задачи розв'язувати

8

Re: E-Olymp: Спроба розв'язати задачу №2860

ur_naz написав:

мабуть зарано тобі олімпіадні задачи розв'язувати

Це моє домашнє завдання... І що тоді розв'язувати, якщо не ці задачі?

Подякували: leofun01, koala, ostap34PHP3