This page is hosted for free by zzz.com.ua, if you are owner of this page, you can remove this message and gain access to many additional features by upgrading your hosting to PRO or VIP for just 32.50 UAH.
Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.

Задача, що легко розв’язується з використанням множини (set)

Задача 2097 — Трьохзначі числа

 https://www.e-olymp.com/uk/problems/2097

 

На заданому проміжку [AB] виведіть у зростаючому порядку всі трьохзначні числа, у яких усі цифри різні.

Вхідні дані

У єдиному рядку два натуральних числа з вказаного проміжку. 100 ≤ A ≤ B ≤ 999.

Вихідні дані

Кожне число виводьте на новому рядку.

 

Вхідні дані #1

100 105

Вихідні дані #1

102

103

104

105

 

Джерело: Китеня 2011 м. Ковров

 

 


Розв'язання.

Перебираємо всі числа проміжку. В тестовому прикладі це буде:

100

101

102

103

104

105

 

Але деякі числа нам не підходять, бо мають повтори цифр. Наприклад в числі 101 дві одиниці, тобто не всі цифри різні.

 

Давайте переберемо всі числа проміжку, кожне з них відконвертуємо в текст, використовуючи стандартну функцію str()

Далі скористаємося функцією створення множини  set()

Дана функція на основі відконвертованого в текст числа створить множину, в якій будуть елементи без повторів. Тобто дана функція створить нам множину, в якій не буде дублікатів. До речі, не гарантується, що  буде збережено порядок елементів, але для нашої задачі це неважливо.

 

Ось приклад, що ілюструє роботу функції set()

>>> a = [1,3,5,4,3,3]

>>> a

[1, 3, 5, 4, 3, 3]

>>> b = set(a)

>>> b

{1, 3, 4, 5}

 

Отже, якщо в тризначному числі всі цифри різні, то довжина множини, що утворена функцією set() буде дорівнювати трьом. Ось як просто це на python:

 

if len(set(str(i))) == 3

 

Ось так просто.  Зверніть увагу, що  писати перебір чисел таким чином: 

for i in range (a,b)

невірно, тому що останній елемент (b) в такому разі не буде перебиратися циклом.


 

Вхід для своїх