ГЖО 7-8 класс 2019 год
Задача B. Уравнение
"Что умеют восьмиклассники? Ну наверное решать уравнения…" Дано целое положительное число $n$. Требуется найти любое решение уравнения $a + b - c * d / e = n$, где $a$, $b$, $c$, $d$, $e$ - различные целые положительные числа.
6Ответ
5 4 6 1 2( Daniyar Zakarin )
Комментарий/решение:
Решение (мое)
- У нас есть выражение: 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";
}
Админ, скажите, почему моё решение неправильно? Вроде все >= 1, все <= 1e9 (во всех случаях.) Все различны. Тогда что здесь неправильно?
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)
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)
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.