На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Не зарегистрирован
ссылка на сообщение  Отправлено: 06.12.20 14:44. Заголовок: Задача 50 (А.Куканова)


Рассматривается множество целых чисел, принадлежащих числовому отрезку [331; 8751], которые удовлетворяют следующим условиям:
− количество цифр в десятичной и шестнадцатеричной записях одинаковое;
− кратны 5, но не 25.
Найдите количество таких чисел и минимальное из них.
Подскажите, пожалуйста, как правильно на Python прописать: количество цифр в десятичной и шестнадцатеричной записях одинаковое.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]







Сообщение: 337
ссылка на сообщение  Отправлено: 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])


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 3
ссылка на сообщение  Отправлено: 09.03.21 12:22. Заголовок: polyakovss пишет: Н..


polyakovss пишет:

 цитата:
Например, так:
def f(x):



А для тех, кто "боится" функций, можно попробовать обойтись и без них, например, так:
 
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)


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
ссылка на сообщение  Отправлено: 05.03.21 10:33. Заголовок: Спасибо большое!!!..


Спасибо большое!!!

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 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)


Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 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)


Спасибо: 0 
Цитата Ответить





Сообщение: 69
ссылка на сообщение  Отправлено: 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)


Оптимально красивое решение!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 416
ссылка на сообщение  Отправлено: 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])



Спасибо: 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 должно быть так же формально проверено на соответствие условию, а в данном случае оно игнорируется, хотя я могу и ошибаться, поскольку с питоном работаю только второй месяц

Спасибо: 1 
Цитата Ответить





Сообщение: 418
ссылка на сообщение  Отправлено: 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])



Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 07.04.21 14:03. Заголовок: polyakovss пишет: З..


polyakovss пишет:

 цитата:
Здравствуйте, _piter!

Вы абсолютно правы. Увы, был невнимателен.
Конечно, правильно так:



Здравствуйте, polyakovss!
Приятно, что среди профессионалов, встречаются люди, способные признавать и исправлять свои ошибки, что, к сожалению не каждому дано.
Так что, респект Вам!

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 303
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет