На досуге вы любите почитать сборники занимательных по . недавно вы наткнулись в одном из таких сборников на следующую : есть бесконечный резервуар с водой и два пустых сосуда объёмом 5 и 12 литров. можно наливать воду из резервуара в любой сосуд до его заполнения, переливать воду из —одного сосуда в другой до заполнения второго или опустошения первого (смотря что будет раньше) и выливать воду из сосуда на землю до полного опустошения сосуда. как таким образом можно отмерить 3 литра? вы решили написать программу, которая будет решать подобные для произвольных объёмов сосудов. входные данные во входном файле находятся три целых числа — v1, v2 и v — объёмы двух сосудов и объем воды, который нужно отмерить. гарантируется, что 1v1v232767 и 0vmax(v1v2). выходные данные в первую строку выходного файла выведите одно число — количество действий в вашем решении. далее выведите соответствующее количество строк, описывающих действия в вашем решении. для каждого действия выведите два числа: если это действие — переливание из одного сосуда в другой, то первое число должно быть номером сосуда, откуда надо переливать воду, а второе — номером сосуда, куда переливать; если это действие — набор воды из резервуара, то первое число должно быть нулём, а второе — номером сосуда, куда наливать; если это действие — выливание воды “на землю”, то первое число должно быть номером сосуда, а второе — нулём. после выполнения всех операций хотя бы в одном сосуде должна находиться вода в объёме v. если существует несколько решений, то вы можете вывести любое. ваше решение не обязано быть оптимальным, единственное ограничение — размер выходного файла не должен превосходить 3 мб. если решений не существует, выведите одно число -1.
Ну начнем с того, что твоя функция ничего не возвращает, она выводит на экран информацию. Второй косяк в том, что функция isdigit() проверяет всю строку, то есть, при строке с одними цифрами твоя программа даст верный ответ.
Исправить максимально просто, нам нужно проверить каждый символ строки, если встречаем хоть 1 цифру, то возвращаем true, а если не встретим в строке цифр - false.
Максимально простой вариант для новичка, скорее всего, такой:
def number(x):
for i in x:
if i.isdigit():
return True
return False
print(number('xx'))
34
Объяснение:
Число X даёт остаток 1 при делении на 3, остаток 0 при делении на 2 и остаток 4 при делении на 5, значит, исходное число можно представить как X = 3a + 1 = 2b = 5c + 4 (числа a, b, c — натуральные или 0).
Рассмотрим равенство 2b = 5c + 4. Число 5c + 4 — чётное, значит, c также чётное (в противном случае мы получим произведение нечётных чисел, т. е. число нечётное, плюс чётное число — результат нечётный).
Рассмотрим равенство 5c + 4 = 3a + 1 ⇔ 5c = 3a - 3 = 3(a - 1) ⇒ число c делится на 3, но также c делится на 2 по равенству, значит, c делится на 6.
Сделаем последовательный перебор чисел c:
Если c = 0, то 5c + 4 = 4 < 10 — число не двузначное.Если c = 6, то 5c + 4 = 34. Действительно, 34 = 3·11 + 1 = 2·17 = 5·6 + 4Значит, 34 — наименьшее искомое двузначное число.