С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 145

Двузначное число, образованное первыми двумя цифрами числа

20.01.2014, 16:51. Показов 4823. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
Какое число образовано из пяти последовательных цифр (идущих не обязательно по порядку) так, что число, образованное первыми двумя цифрами, умноженное на среднюю цифру, дает число, образованное последними двумя цифрами. (Например, если мы возьмем число 12 896, то 12, умноженное на 8, дает 96. Но, к несчастью, 1, 2, 6, 8, 9 не являются последовательными цифрами, так что этот пример в качестве решения не пригоден.)
На основе этой темы Двузначное число, образованное первыми двумя цифрами числа, умноженное на 3-ю цифру.. составил решение. Но думаю можно как то покороче может?
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
 
#Создание возможного диапазона пятизначных чисел
a = [x for x in range(10000, 100000)]
d=0
while d<len(a):
    t = str(a[d])
    c=0
    while c<len(t):
        if t.count(t[c]) != 1:
            a.pop(d)
            c=len(t)
            d-=1
        else:
            c+=1
    d+=1
#Проряжение диапазона пятизначных чисел
#1-Если минимальное значение + 4 не равно максимальному значению
#Или минимальное значение равно 0
d=0
while d<len(a):
    t = [x for x in str(a[d])]
    t.sort()
    if int(min(t)) + 4 != int(max(t)) or int(min(t)) == 0:
        a.pop(d)
        d-=1
    d+=1
#Создание диапазона начальных значение
#Фильтр на результат превышающий 2-а символа
#Фильтр на совпадения
s = [x for x in range(12, 99)]
c=0
fin_res = []
while c<len(s):
    d=1
    while d<10:
        if len(str(s[c]*d)) < 3 and str(s[c]) != str(str(s[c]*d)) and \
         str(d) not in str(s[c]) and str(d) not in str(str(s[c]*d)):
            var = s[c]*d
            sts = str(s[c])+str(d)+str(var)
            fin_res.append(sts)
        d+=1
    c+=1
#Вывод результата
m=0
fin_end = []
while m<len(fin_res):
    d=0
    while d<len(a):
        if str(a[d]) in str(fin_res[m]):
            fin_end.append(int(a[d]))
        d+=1
    m+=1
 
print(fin_end)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2014, 16:51
Ответы с готовыми решениями:

Двузначное число, образованное первыми двумя цифрами числа, умноженное на 3-ю цифру..
Двузначное число, образованное первыми двумя цифрами числа, умноженное на 3-ю цифру дает в произведении число, составленное последними...

Написать программу которая выводит число образованное двумя первыми разрядами
Написать программу которая вводит целое число &gt;9 и выводит двузначное число образованное двумя первыми ( старшими) цифрами исходного...

Дано двузначное число. Получить число образованное при перестановке цифр заданного числа
дано двузначное число.получить число образованное при перестановке цифр заданного числа. Прошу вашей помощи с решением

3
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
22.01.2014, 07:23
Лучший ответ Сообщение было отмечено Somebody как решение

Решение

Цитата Сообщение от ivsatel Посмотреть сообщение
while d<len(a):
Можно заменить на цикл с итератором
Python
1
for d in a
range заменить на xrange.

Добавлено через 10 минут
У меня получилось так:
Python
1
2
3
4
5
6
7
8
9
10
def my_condition(d):
    sd = str(d)
    nums = [int(c) for c in sd]
    onums = sorted(nums)
    result = onums[4] - onums[3] == onums[3] - onums[2] == onums[2] - onums[1] == onums[1] - onums[0] == 1 and (nums[0] * 10 + nums[1])* nums[2] == (nums[3] * 10 + nums[4])
    return result
    
 
my_nums = [x for x in xrange(10000, 100000) if my_condition(x)]
print my_nums
Добавлено через 23 часа 3 минуты
Во, ещё немного подумал - модификация для быстродействия
Python
1
2
3
4
5
6
7
8
9
def my_condition(d):
    sd = str(d)
    nums = [int(c) for c in sd]
    if (nums[0] * 10 + nums[1])* nums[2] == (nums[3] * 10 + nums[4]):
        onums = sorted(nums)
        result = onums[4] - onums[3] == onums[3] - onums[2] == onums[2] - onums[1] == onums[1] - onums[0] == 1 
    else:
        result = False
    return result
1
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 145
22.01.2014, 13:11  [ТС]
dondublon, Да действительно. Количество проходов значительно уменьшилось.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
22.01.2014, 20:37
Лучший ответ Сообщение было отмечено Somebody как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from itertools import permutations
 
def number_from_digits(digits):
  return reduce(lambda n, d: n * 10 + d, digits)
  
def good_numbers():
  for first_digit in range(0, 6):
    for digits in permutations(range(first_digit, first_digit + 5)):
      a = number_from_digits(digits[0:2])
      b = digits[2]
      c = number_from_digits(digits[3:5])
      if digits[0] != 0 and a * b == c:
        yield number_from_digits(digits)
 
print(list(good_numbers()))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2014, 20:37
Помогаю со студенческими работами здесь

Числа, представимые разностью квадрата числа, образованного первыми двумя цифрами и квадратом 3-ей цифры
найти все трехзначные числа которые можно представить разность между квадратом числа образованного первыми двумя цифрами и квадратом...

Найти все трехзначные числа, равные разности квадрата числа, образованного первыми двумя цифрами, и квадратом третьей
Надо найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и...

Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры
Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом...

Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры
1. Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом...

Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры
Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru