Автор | Сообщение |
|
Отправлено: 06.12.20 14:44. Заголовок: Задача 50 (А.Куканова)
Рассматривается множество целых чисел, принадлежащих числовому отрезку [331; 8751], которые удовлетворяют следующим условиям: − количество цифр в десятичной и шестнадцатеричной записях одинаковое; − кратны 5, но не 25. Найдите количество таких чисел и минимальное из них. Подскажите, пожалуйста, как правильно на Python прописать: количество цифр в десятичной и шестнадцатеричной записях одинаковое.
|
|
|
Ответов - 10
[только новые]
|
|
|
Отправлено: 06.12.20 16:00. Заголовок: Ответ
Например, так: def f(x): def count(x,k): n=0 i=x while i: n += 1 i //= k return n if count(x,10)==count(x,16) and x % 5 == 0 and x % 25 != 0: return True else: return False L = [x for x in range(331, 8751+1) if f(x)] print(len(L),' ',L[0])
|
|
|
|
Отправлено: 09.03.21 12:22. Заголовок: polyakovss пишет: Н..
polyakovss пишет: А для тех, кто "боится" функций, можно попробовать обойтись и без них, например, так: summ = 0 for i in range(8751,330,-1): n = i; count = 0 while n: count += 1 n//=16 if count == len(str(i)) and i%5 == 0 and i%25 != 0: summ += 1 pam = i print(' summ = ',summ,' pam = ',pam)
|
|
|
|
Отправлено: 05.03.21 10:33. Заголовок: Спасибо большое!!!..
Спасибо большое!!!
|
|
|
|
Отправлено: 02.04.21 19:04. Заголовок: Есть способ легче, ч..
Есть способ легче, через встроенную функцию hex() - перевод из 10 в 16: count = 0 Qmax = 0 for i in range(331, 8751+1): if len(hex(i)[2:]) == len(str(i)) and \ i % 5 == 0 and i % 25 != 0: count += 1 if Qmax == 0: Qmax = i print(count, Qmax)
|
|
|
|
Отправлено: 06.04.21 10:20. Заголовок: _RayBoy_ пишет: Ест..
_RayBoy_ пишет: Легче, не всегда бывает - понятнее. И так тоже работать будет: count=0 for i in range(8751, 330, -1): if len(hex(i)[2:]) == len(str(i)) and i % 5 == 0 and i % 25 != 0: count += 1 c=i print(count,c)
|
|
|
|
Отправлено: 06.04.21 11:56. Заголовок: _piter пишет: count..
_piter пишет: цитата: | count=0 for i in range(8751, 330, -1): if len(hex(i)[2:]) == len(str(i)) and i % 5 == 0 and i % 25 != 0: count += 1 c=i print(count,c) |
| Оптимально красивое решение!
|
|
|
|
Отправлено: 06.04.21 17:20. Заголовок: Тогда уж так: L = )..
Тогда уж так: цитата: | L = [x for x in range(331, 8751) if len(hex(x)[2:]) == len(str(x)) and x % 5 == 0 and x % 25 != 0] print(len(L),L[0]) |
|
|
|
|
|
Отправлено: 07.04.21 06:25. Заголовок: polyakovss пишет: L..
polyakovss пишет: цитата: | L = [x for x in range(331, 8751) if len(hex(x)[2:]) == len(str(x)) and x % 5 == 0 and x % 25 != 0] print(len(L),L[0]) |
| Красивое решение, только в условии говорится: "Рассматривается множество целых чисел, принадлежащих числовому отрезку [331; 8751]", т.е. число 8751 должно быть так же формально проверено на соответствие условию, а в данном случае оно игнорируется, хотя я могу и ошибаться, поскольку с питоном работаю только второй месяц
|
|
|
|
Отправлено: 07.04.21 11:31. Заголовок: Ответ
Здравствуйте, _piter! Вы абсолютно правы. Увы, был невнимателен. Конечно, правильно так: цитата: | L = [x for x in range(331, 8751+1) if len(hex(x)[2:]) == len(str(x)) and x % 5 == 0 and x % 25 != 0] print(len(L),L[0]) |
|
|
|
|
|
Отправлено: 07.04.21 14:03. Заголовок: polyakovss пишет: З..
polyakovss пишет: цитата: | Здравствуйте, _piter! Вы абсолютно правы. Увы, был невнимателен. Конечно, правильно так: |
| Здравствуйте, polyakovss! Приятно, что среди профессионалов, встречаются люди, способные признавать и исправлять свои ошибки, что, к сожалению не каждому дано. Так что, респект Вам!
|
|
|
|