ГЖО 7-8 класс 2019 год


Задача B. Уравнение

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

"Что умеют восьмиклассники? Ну наверное решать уравнения…" Дано целое положительное число $n$. Требуется найти любое решение уравнения $a + b - c * d / e = n$, где $a$, $b$, $c$, $d$, $e$ - различные целые положительные числа.
Формат входного файла
В входных данных записано одно целое положительное число $n$($1 <= n <= 10^9$).
Формат выходного файла
Если решений нет выведите $-1$, иначе выведите пять чисел $a$, $b$, $c$, $d$, $e$ - решения уравнения($1 <= a, b, c, d, e <= 10^9$).
Пример:
Вход
6
Ответ
5 4 6 1 2
( Daniyar Zakarin )
посмотреть в олимпиаде

Комментарий/решение:

  0
2019-11-25 16:13:43.0 #

Скинь решение, или объясни как решать

  0
2025-05-07 12:05:44.0 #

Решение (мое)

- У нас есть выражение: a + b - c * d / e = n

Если перебирать значения (что первое приходит в голову), то оно будет кошмарно медленным, что не уложится в 1 секунду по времени. В таком случае можно сделать так:

- Пусть, e = 1. Тогда выражение упрощается до a + b - c * d = n

Чтобы сильнее упростить само выражение можно приравнять b = c * d, так как они будут взаимоуничтожаться. Можно выбрать такие числа (я выбрал b = 6, c = 2, d = 3, но можно и другие).

Теперь выражение просто становится a = n.

Но, надо рассмотреть случай, когда n <= 6 (так как в таком случае числа будут повторяться, что противоречит условиям). Можно выбрать числа b, c, d, e, которые будут больше 6 (чтобы не повторялся при a = n).

------------------------------------------------------------------------------

Код:

void sol(){

ll n;

cin >> n;

if(n <= 6){

ll a = n, b = 10000, c = 1000, d = 100, e = 10;

cout << a << " " << b << " " << c << " " << d << " " << e << "\n";

return;

}

ll a = n, b = 6, c = 2, d = 3, e = 1;

cout << a << " " << b << " " << c << " " << d << " " << e << "\n";

}

пред. Правка 2   0
2019-12-19 14:24:25.0 #

Админ, скажите, почему моё решение неправильно? Вроде все >= 1, все <= 1e9 (во всех случаях.) Все различны. Тогда что здесь неправильно?

показать/скрыть код

  3
2019-12-19 14:36:45.0 #

чекер обновил.

простым cout попробуйте если не получиться.

  0
2019-12-20 10:08:57.0 #

Большое спасибо!

  0
2021-03-07 20:00:08.0 #

n = int(input())

for a in range(1, n + 1):

for b in range(1, n + 1):

for d in range(1, n + 1):

for c in range(1, n + 1):

for e in range(1, n + 1):

if a != b and a != c and a != d and a != e:

if b != c and b != d and b != e:

if c != d and c != e:

if d != e:

print(a, b, c, d, e)

  0
2023-02-08 14:07:23.0 #

n = int(input())

for a in range(1, n+1):

for b in range(1, n + 1):

for c in range(1, n + 1):

for d in range(1, n + 1):

for e in range(1, n + 1):

if a != b and a != c and a != d and a != e:

if b != c and b != d and b != e:

if c != d and c != e:

if d != e:

k = a + b - c*d/e

if k == n:

print(a, b, c, d, e)