var A, F, G: array [1..20] of integer;
sA, sF: string;
i: integer;
begin
for i:= 1 to 20 do
begin
A[i] := random(-20, 20);
F[i] := random(-20, 20);
sA += A[i] + ' ';
sF += F[i] + ' ';
end;
writeln('A: ' + sA);
writeln('F: ' + sF);
write('G: ');
for i:= 1 to 20 do
begin
if A[i] < F[i] then
G[i] := A[i]
else
G[i] := F[i];
write(G[i] + ' ');
end;
writeln();
end.
--- Python 3.8.3 ---
n = int(input('n: \n'))
counter = 0
for coin1 in range(0, n+ 1):
for coin2 in range(0, (n // 2) + 1):
for coin5 in range(0, (n // 5) + 1):
for coin10 in range(0, (n // 10) + 1):
if coin1 * 1 + coin2 * 2 + coin5 * 5 + coin10 * 10 == n: counter += 1
print(counter)
для n в пределах 100-200 считает вроде правильно, и достаточно быстро. Что до больших значений n, мне не хватило терпения. Ненормально это, успеть попить чаю в ожидании конца работы программы в 8 строк.
При желании можно использовать как стресс-тест ЦПУ
def parse(abs_x, A, B):
left_part = A*abs(abs_x)
right_part = -B
print(left_part, right_part)
if (right_part < 0 and left_part > 0) and (abs(right_part) == abs(left_part)):
result = 'Any x'
return result
if (right_part > 0 and left_part > 0) and (abs(right_part) == abs(left_part)):
result = 'X in (-inf, -{0}) V ({0}, +inf)'.format(abs(abs_x))
return result
if (right_part < 0 and left_part < 0) and (abs(right_part) == abs(left_part)):
result = 'X in (-{0}, {0})'.format(abs(abs_x))
return result
return 'No such x'
def solve(A, B):
""" A |X| + B > 0 """
try:
abs_x = (-B / A)
except ZeroDivisionError as error:
print('No such x')
raise SystemExit(error)
else:
return parse(abs_x, A, B)
def main():
A,B = map(int, input().split())
x = solve(A,B)
print(x)
if __name__ == '__main__':
main()
Объяснение:
Язык - Python 3.7.2. Программа протестирована на предложенных входных/выходных данных, вроде всё работает. Ниже приложен скриншот, по которому можно восстановить все табуляции, так как сайт напрочь ломает Python-код.