Если числа имеют среди делителей только 2, 3 и 5 в любой степени, то, расположенные по возрастанию, они образуют последовательность Хэмминга. Выведите n-е число последовательности.
Первые 10 чисел такие: 2, 3, 4, 5, 6, 8, 9, 10, 12, 15.
Пример Ввод Вывод 5 6
Я задачу решила но она не проходит по ограничению по времени (ограничение 1 секунда), Мой код: a = int(input()) i = 0 y = 0 while i != a: y += 1 x = y if x % 2 == 0: while x % 2 == 0: x = x / 2 if x % 3 == 0: while x % 3 == 0: x = x / 3 if x % 5 == 0: while x % 5 == 0: x = x / 5 if x == 1: i += 1
elif x % 3 == 1: while x % 3 == 0: x = x / 3 if x == 1: i += 1
elif x % 3 == 0: while x % 3 == 0: x = x / 3 if x == 1: i += 1
elif x == 1: i += 1
elif x % 5 == 0: while x % 5 == 0: x = x / 5 if x == 1: i += 1
elif x % 3 == 0: while x % 3 == 0: x = x / 3 if x % 5 == 0: while x % 5 == 0: x = x / 5 if x == 1: i += 1 elif x == 1: i += 1
elif x % 5 == 0: while x % 5 == 0: x = x / 5 if x == 1: i += 1 elif x == 1: i += 0 print(y)
1616 + (пример числа 888 - 8+8=16 и 8+8=16 записываем 16 16 в порядке невозрастания) 979 9+7=16 и 7+9=16) 169 + (пример числа 790 7+9=16 и 9+0=9 записываем 16 и 9 в порядке невозрастания (убывания) 169 163 - (чтобы получить 16 нужно сложить (9 и 7) или (8 и 8) или (7 и 9) больше нет вариантов, тогда вторая цифра (7 или 8 или 9) плюс третья цифра какого-то числа в сумме должна получиться цифра 3 (такого быть не может) 1916 - (19 не можем получить, если взять максимальные цифры 9 и 9 получим только 18) 1619 - нарушение второго пункта (должно быть записано в порядке убывания) 316 - (если рассматривать 31 и 6 не может быть и если рассматривать 3 и 16 нарушение п.2) 916 - (см пункт 2) 116 + (пример числа 651 6+5=11 и 5+1=6 записываем 11 и 6 в порядке убывания (невозрастания) 11 6) В итоге получаем три числа
Var 1 Задача n, pr, i, a: integer; begin readln(n); pr := 0; for i := 1 to n do begin read(a); if (a mod 3 = 0) then if (pr > 0) then pr := pr * a else pr := a; end; writeln(pr); end. 2 Задача var n, i, pl, ot, a: integer; begin readln(n); pl := 0; ot := 0; for i := 1 to n do begin read(a); if (a >= 0) then inc(pl, a) else begin if (ot <> 0) then ot := ot * a else ot := a; end; end; if (pl > ot) then writeln('Polozitelnii) else writeln('Otricat'); end. var n, i, a, posl, prd: integer; begin readln(n); posl := 0; prd := 0; for i := 1 to n do begin read(a); if (a < 0) then begin prd := posl; posl := a; end; end; if (posl = 0) then writeln('Нет отрицательных') else writeln(prd); end.
979 9+7=16 и 7+9=16)
169 + (пример числа 790 7+9=16 и 9+0=9 записываем 16 и 9 в порядке невозрастания (убывания) 169
163 - (чтобы получить 16 нужно сложить (9 и 7) или (8 и 8) или (7 и 9) больше нет вариантов, тогда вторая цифра (7 или 8 или 9) плюс третья цифра какого-то числа в сумме должна получиться цифра 3 (такого быть не может)
1916 - (19 не можем получить, если взять максимальные цифры 9 и 9 получим только 18)
1619 - нарушение второго пункта (должно быть записано в порядке убывания)
316 - (если рассматривать 31 и 6 не может быть и если рассматривать 3 и 16 нарушение п.2)
916 - (см пункт 2)
116 + (пример числа 651 6+5=11 и 5+1=6 записываем 11 и 6 в порядке убывания (невозрастания) 11 6)
В итоге получаем три числа
1 Задача
n, pr, i, a: integer;
begin
readln(n);
pr := 0;
for i := 1 to n do
begin
read(a);
if (a mod 3 = 0) then
if (pr > 0) then
pr := pr * a
else
pr := a;
end;
writeln(pr);
end.
2 Задача
var
n, i, pl, ot, a: integer;
begin
readln(n);
pl := 0;
ot := 0;
for i := 1 to n do
begin
read(a);
if (a >= 0) then
inc(pl, a)
else
begin
if (ot <> 0) then
ot := ot * a
else
ot := a;
end;
end;
if (pl > ot) then
writeln('Polozitelnii)
else
writeln('Otricat');
end.
var
n, i, a, posl, prd: integer;
begin
readln(n);
posl := 0;
prd := 0;
for i := 1 to n do
begin
read(a);
if (a < 0) then
begin
prd := posl;
posl := a;
end;
end;
if (posl = 0) then
writeln('Нет отрицательных')
else
writeln(prd);
end.