Автор | Сообщение |
|
Отправлено: 27.04.21 18:18. Заголовок: Задание 5 №1717
У кого ошибка: у меня или в ответе задания? (вариант 2301) (№ 1717) Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам. 1. Из цифр, образующих десятичную запись N, строятся наибольшее и наименьшее возможные двузначные числа (числа не могут начинаться с нуля). 2. На экран выводится разность полученных двузначных чисел. Пример. Дано число N = 351. Наибольшее двузначное число из заданных цифр – 53, наименьшее – 13. На экран выводится разность 53 – 13 = 40. Чему равно количество чисел N на отрезке [700; 800], в результате обработки которых на экране автомата появится число 80? Ответ: 2 Код ниже прилагаю: Скрытый текст counter = 0 for N in range(700, 800 + 1): number = N digits = [] while number > 0: digits.append(number % 10) number //= 10 digits.sort() for i in range(len(digits)): biggerNum = int(str(digits[2]) + str(digits[1])) if digits[0] == 0: lessNum = 0 else: lessNum = int(str(digits[0]) + str(digits[1])) if biggerNum - lessNum == 80: counter += 1 print(N, digits) print(biggerNum, lessNum) print('---') print(counter)
| Вывод: Скрытый текст 719 [1, 7, 9] 97 17 --- 791 [1, 7, 9] 97 17 --- 800 [0, 0, 8] 80 0 --- 3
|
|
|
|
Ответов - 9
[только новые]
|
|
|
Отправлено: 27.04.21 18:19. Заголовок: ``` coun..
``` counter = 0 for N in range(700, 800 + 1): number = N digits = [] while number > 0: digits.append(number % 10) number //= 10 digits.sort() for i in range(len(digits)): biggerNum = int(str(digits[2]) + str(digits[1])) if digits[0] == 0: lessNum = 0 else: lessNum = int(str(digits[0]) + str(digits[1])) if biggerNum - lessNum == 80: counter += 1 print(N, digits) print(biggerNum, lessNum) print('---') print(counter) ```
|
|
|
|
Отправлено: 27.04.21 18:21. Заголовок: counter = 0 for N ..
counter = 0 for N in range(700, 800 + 1): number = N digits = [] while number > 0: digits.append(number % 10) number //= 10 digits.sort() for i in range(len(digits)): biggerNum = int(str(digits[2]) + str(digits[1])) if digits[0] == 0: lessNum = 0 else: lessNum = int(str(digits[0]) + str(digits[1])) if biggerNum - lessNum == 80: counter += 1 print(N, digits) print(biggerNum, lessNum) print('---') print(counter)
|
|
|
|
| Администратор
|
Сообщение: 2761
|
|
Отправлено: 27.04.21 18:56. Заголовок: Egor123123 пишет: дв..
Egor123123 пишет: цитата: | двузначные числа (числа не могут начинаться с нуля) |
|
Ваш третий вариант не подходит.
|
|
|
|
Отправлено: 28.04.21 00:26. Заголовок: Вариант решения
Вариант решения задачи 1717: цитата: | def f(x): L=sorted([int(x) for x in str(x)]) max_d = L[2]*10 + L[1] c = L.count(0) if c == 0: min_d = L[0]*10 + L[1] if c == 1: min_d = L[1]*10 if c == 2: min_d = max_d return max_d - min_d print(len([x for x in range(700,801) if f(x) == 80])) |
|
|
|
|
|
Отправлено: 08.01.23 00:59. Заголовок: def f(n): d = ..
цитата: | def f(n): d = [] for i in permutations(n, 2): n1 = int(''.join(i)) if n1 >= 10: d.append(n1) return d k = 0 for i in range(700, 801): lst = f(str(i)) if max(lst) - min(lst) == 80: k += 1 print(k) |
|
|
|
|
|
Отправлено: 08.01.23 00:59. Заголовок: def f(n): d = ..
цитата: | def f(n): d = [] for i in permutations(n, 2): n1 = int(''.join(i)) if n1 >= 10: d.append(n1) return d k = 0 for i in range(700, 801): lst = f(str(i)) if max(lst) - min(lst) == 80: k += 1 print(k) |
|
|
|
|
|
Отправлено: 11.04.23 21:11. Заголовок: еще одно
k = 0 for n in range(900, 1000): s = str(n) p1 = [int(s[0]), int(s[1]), int(s[2])] p2 = sorted(p1) t1 = int((str(p2[2]) + str(p2[1]))) if p2[0] == 0 and p2[1] != 0: t2 = int((str(p2[1]) + str(p2[0]))) elif p2[0] == 0 and p2[1] == 0: t2 = int((str(p2[2]) + str(p2[1]))) elif p2[0] != 0 and p2[1] == 0: t2 = int((str(p2[0]) + str(p2[1]))) else: t2 = int((str(p2[0]) + str(p2[1]))) p3 = abs(t1 - t2) if p3 == 70: k += 1 print(k)
|
|
|
|
Отправлено: 11.04.23 21:12. Заголовок: k = 0 for n in rang..
k = 0 for n in range(900, 1000): s = str(n) p1 = [int(s[0]), int(s[1]), int(s[2])] p2 = sorted(p1) t1 = int((str(p2[2]) + str(p2[1]))) if p2[0] == 0 and p2[1] != 0: t2 = int((str(p2[1]) + str(p2[0]))) elif p2[0] == 0 and p2[1] == 0: t2 = int((str(p2[2]) + str(p2[1]))) elif p2[0] != 0 and p2[1] == 0: t2 = int((str(p2[0]) + str(p2[1]))) else: t2 = int((str(p2[0]) + str(p2[1]))) print(p2, t1 - t2) p3 = abs(t1 - t2) if p3 == 70: k += 1 print(k)
|
|
|
|
Отправлено: 22.06.23 21:12. Заголовок: k=0 for n in range(..
k=0 for n in range(700,801): par=[int(str(a)+str(b)) for (a,b) in permutations(str(n),2) if a!='0' and a+b!='00'] if max(par)-min(par)==80: k+=1; print(k,n)
|
|
|
|