Показаны сообщения с ярлыком Python. Показать все сообщения
Показаны сообщения с ярлыком Python. Показать все сообщения

28.02.2024

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

Задача. Дана строка символов. Найти подстроку максимальной длины, содержащую не более двух цифр 0. Вывести найденную подстроку и ее дину (если таких подстрок несколько, вывести любую из них).

Воспользуемся алгоритмом выделения всех возможных подстрок некоторой заданной строки, рассмотренным ранее в этом блоге.

for k in range(len(s)): 

    for j in range(k,len(s)):        

        print(s[k:j+1])

Как будем решать задачу

  1. Запустим внешний цикл по счетчику k по длине строки.
  2. Обнулим счетчик p символов-цифр 0.
  3. Запустим внутренний цикл по счетчику j в диапазоне от значения внешнего счетчика цикла до конца строки.
    • Если символ строки это цифра 0, то увеличим счетчик цифр 0.
    • Если счетчик цифр 0 более 2, то прекратим обработку текущей подстроки командой break, в противном случае найдем максимум длины текущей подстроки.

Программа решения задачи на языке Python

s = "0a0bc00d04efgrt0habc0"

m = 0

for k in range(len(s)):

    p = 0 

    for j in range(k,len(s)):

        if s[j]=='0':

            p+=1 

        if p>2:

            break 

        else:

            if len(s[k:j+1])>=m: #найдем последнюю такую подстроку

                m = len(s[k:j+1])

                x = s[k:j+1]

print(x, len(x))

Результат запуска программы

Подстрока наибольшей длины

Проведем эксперимент с нейросетью. Сможет ли нейросеть написать код, решающий данную задачу?

Будем использовать нейросеть chatinfo.ru

Запрос. Дана строка символов. Найти подстроку максимальной длины, содержащую не более двух цифр 0. Вывести найденную подстроку и ее дину (если таких подстрок несколько, вывести последнюю из них).

Код от нейросети chatinfo.ru

def find_max_substring(string):

    max_length = 0  # Переменная для хранения длины максимальной подстроки

    max_substring = ""  # Переменная для хранения максимальной подстроки

    current_length = 0  # Переменная для хранения длины текущей подстроки

    current_substring = ""  # Переменная для хранения текущей подстроки

    zero_count = 0  # Переменная для отслеживания количества найденных нулей

    for char in string:

        if char == "0":

            zero_count += 1

            # Если найдено более двух нулей, обновляем текущую подстроку

            if zero_count > 2:

                current_length = 0

                current_substring = ""

                zero_count = 1

        current_length += 1

        current_substring += char

        # Если длина текущей подстроки больше длины максимальной подстроки,

        # обновляем значения максимальной длины и подстроки

        if current_length > max_length:

            max_length = current_length

            max_substring = current_substring

    return max_substring, max_length

# Пример использования

string = "0a0bc00d04efgrt0habc0"

max_substring, length = find_max_substring(string)

print("Максимальная подстрока:", max_substring)

print("Длина подстроки:", length)

Подстрока максимальной длины

Нейросеть не учла символ d в искомой подстроке, а значит и все символы (не равные 0), которые были бы в этом месте. Но попытка хорошая 👌 (тем более, что в один цикл).

24.02.2024

Как найти слова с цифрами. Программа на языке Паскаль, Python (применение множеств)

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

Разберем следующие способы решения:

  1. подсчитаем количество символов-цифр в слове ("в лоб", пройдя вдоль слова циклом),
  2. найдем длину множества, равного пересечению множества символов слова и множества символов-цифр.

Способ 1

  • Введем строку
  • Получим список слов, разделив строку по пробелу методом split()
  • Пройдем циклом по списку слов
    • подсчитаем количество символов-цифр методом countof()
    • если количество символов-цифр больше 0, выведем слово

Программа решения задачи на языке Паскаль

var s:string;

begin

  readln(s);

  var a:=s.Split();

  foreach var d in a do

  begin

    var t:=d.countof('0') + d.countof('1') + d.countof('2') + d.countof('3') + d.countof('4') + d.countof('5') + d.countof('6') + d.countof('7') + d.countof('8') + d.countof('9');

    if t>0 then println(d);

  end;

end.

Результат запуска программы

слова с цифрами

Способ 2

В отличие от предыдущего кода, пройдем по слову циклом и будем проверять, является ли символ слова цифрой (применим проверку за счет принадлежности множеству цифр), если да, то будем копить счетчик. Если после обработки слова счетчик цифр больше 0, то выведем слово.

Программа решения задачи на языке Паскаль

var s:string;

begin

  readln(s);

  var a:=s.Split();

  foreach var d in a do

  begin

    var t:=0;

    foreach var h in d do

    begin

      if h in ['0'..'9'] then t+=1;

    end;

    if t>0 then println(d);

  end;

end.

Способ 3

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

Программа решения задачи на языке Паскаль

var s:string;

begin

  readln(s);

  var a:=s.Split();

  foreach var d in a do

  begin

    var m: set of char;

    m:=[];

    foreach var h in d do include(m,h);

    m:=m * ['0'..'9'];

    if m.count>0 then println(d);

  end;

end.

Покажем решение данной задачи на языке Python

Преобразуем слово к множеству и найдем пересечение с множеством цифр (операция &), если длина полученного множества больше 0, выведем слово.

Программа решения задачи на языке Python

s = input()

a = s.split()

for d in a:

    m = set(d) & set('0123456789')

    if len(m)>0:

        print(d)




Как получить все возможные подстроки из заданной строки на Питоне (Python)

Читать

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 0 до 9 включительно. Определите максимальное количество идущих подряд символов, которые могут представлять запись числа в шестнадцатеричной системе счисления.

Читать

Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD. ЕГЭ по информатике. Задание № 24. Решение на языке Python

Читать

08.02.2024

Строки в Python. Split. Задачи. Перевертыш (палиндром)

 Задача. Дана строка слов, разделенных пробелами. Вывести слова в столбец.

Воспользуемся методом split(), который делит строку по заданному разделителю и возвращает список подстрок.

s = 'привет мир как дела'

a = s.split() #по умолчанию разделителем считается пробел

print(a)

Вывод:

['привет','мир','как','дела']

Для того, чтобы вывести слова в столбец воспользуемся циклом.

for k in a:

    print(k)

Вывод:

привет

мир

как

дела

Задача. Дана строка слов, разделенных пробелами. Найти количество слов перевертышей.

Проверим слово, является ли оно перевертышем (палиндромом), взяв срез от начала до конца строки с шагом -1.

s = 'шалаш1'

x = s[::-1]

print(x)

Вывод:

1шалаш

Программа решения задачи на языке Python

s = 'как тот кок готовил плов'

a = s.split()

k = 0

for t in a:

    x = t[::-1]

    if x == t:

        #print(x)

        k+=1

print(k)

Вывод:

3


Как получить все возможные подстроки из заданной строки на Питоне (Python)

Читать

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 0 до 9 включительно. Определите максимальное количество идущих подряд символов, которые могут представлять запись числа в шестнадцатеричной системе счисления.

Читать

Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD. ЕГЭ по информатике. Задание № 24. Решение на языке Python

Читать

30.01.2024

Ввести список в одну строку Питон (Python)

Как ввести числа в список из одной строки?

Что необходимо:

  • Команда input() для ввода строки.
  • Команда split() для разделения строки по пробелу и получения списка строк.
  • Функция map() для применения функции к каждому элементу списка.
  • Функция list() для преобразования объекта к списку.

Демонстрация

s = input().split()

print(s)

Ввод: 123 45 -19

Вывод: ['123', '45', '-19']

Преобразуем каждую строку списка s к целому числу функцией map().

s = map(int, input().split())

print(s)

Ввод: 23 12 -56

Вывод: <map object at 0x00000000030EF608>

Преобразуем map объект к списку.

s = map(int, input().split())

s = list(s)

print(s)

Ввод: 23 -35 45

Вывод: [23, -35, 45]

Ввод чисел в список из одной строки (программа на языке Python)

s = list(map(int, input().split()))

print(s)

А если нужно ввести в список нецелые числа?

Как получить все возможные подстроки из заданной строки на Питоне (Python)

Задача. Получить все возможные подстроки из заданной строки.

Пусть дана строка s. Запустим внешний цикл с счетчиком i от 0 индекса строки до конца строки, а в нем цикл по счетчику j от значения i до конца строки. Получим подстроку срезом s[i: j+1].

s = 'Риса'

for i in range(len(s)):

    for j in range(i,len(s)):

        print(s[i:j+1])

Результат запуска программы

Все подстроки из заданной строки

Если необходимо обработать по пути следования во внутреннем цикле текущую подстроку, то к символу s[j] нужно задать вопрос.

Пример задачи. Найти подстроку наибольшей длины, состоящую только из цифр.

s = '1707Риса119'

m = 0

for i in range(len(s)):

    k = 0 #счетчик цифр текущей подстроки

    for j in range(i,len(s)):

        if s[j]>='0' and s[j]<='9':

            k+=1

        if k == len(s[i:j+1]): #счетчик цифр равен длине текущей подстроки

            #print(s[i:j+1])

            m = max(m,len(s[i:j+1])) 

print(m)

Ответ: 4

А как найти среди этих чисел наибольшее?

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 0 до 9 включительно. Определите в прилагаемом файле максимальное количество идущих подряд символов, которые могут представлять запись числа в шестнадцатеричной системе счисления. Программа на Питоне (Python). ЕГЭ по информатике

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 0 до 9 включительно. Определите в прилагаемом файле максимальное количество идущих подряд символов, которые могут представлять запись числа в шестнадцатеричной системе счисления.

Для выполнения этого задания следует написать программу. Числа с незначащими нулями в ответ брать не следует.

Как будем решать задачу

Задачу на обработку строки, сохраненной в файле, решали ранее в этом блоге. (Задача. Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD. Читать)

  • Считаем строку из файла
  • Получим все возможные подстроки конструкцией вложенных циклов (публикация Как получить все возможные подстроки из заданной строки)
  • В текущей подстроке проверим символ на принадлежность алфавиту 16-ой с.с. Если это так, будем копить счетчик 16-ых цифр.
  • Если счетчик 16-ых цифр равен длине подстроки, это значит, что в ней нет посторонних символов (также добавим условие, что первый символ подстроки это не цифра 0), найдем максимум длины подстроки, иначе прервем обработку подстроки break.

Программа решения задачи на языке Python

f = open('24_10724.txt')

s = f.readline()

m = 0

alf = '0123456789ABCDEF'

for i in range(len(s)):

    k = 0

    for j in range(i,len(s)):

        if s[j] in alf:

            k+=1

        if k==len(s[i:j+1]) and s[i:j+1][0]!='0':

            m = max(m,len(s[i:j+1]))

        else:

            break

print(m)

Ответ: 21

23.01.2024

У исполнителя Кузнечик две команды Прибавь 3 Вычти 2. Сколько различных чисел можно получить из числа 1 с помощью программы, которая содержит ровно 68 команд? Программа решения задачи на языке Python

Задача. У исполнителя Кузнечик две команды:

  1. Прибавь 3
  2. Вычти 2

Программа для Кузнечика – это последовательность команд. Первая из них увеличивает число на экране на 3, вторая – уменьшает его на 2 (отрицательные числа допускаются). Сколько различных чисел можно получить из числа 1 с помощью программы, которая содержит ровно 68 команд?

Как будем решать задачу

Создадим пользовательскую функцию f(x, k), которая будет получать следующее число (+3 или -2) и уменьшать количество команд.

Пример:

Дерево

Вызов f(x+3, k-1) будет получать число за счет команды x+3, количество команд уменьшится на 1. Возникнет рекурсия. Функция будет вызывать саму себя. Чтобы остановить вызовы функций воспользуемся условием k == 0, то есть команд для выполнения не осталось, в этом случае выведем число x.

if k == 0:

    print(x)

else:

    f(x+3, k-1)

    f(x-2, k-1)

Для вызова функции в основной программе запишем f(1, 68), это будет означать исходное число 1, количество выполняемых команд 68.

Если вызовем функцию f(1, 2), получим числа за 2 команды (как на рисунке выше).

def f(x,k):

    if k==0:

        print(x,end = ' ')

    else:

        f(x+3,k-1)

        f(x-2,k-1)

f(1,2)

Вывод: 7 2 2 -3

Чтобы сохранить различные числа воспользуемся множеством m. В качестве ответа выведем длину множества len(m).

def f(x,k):

    if k==0:

        m.add(x)

        print(x,end = ' ')

    else:

        f(x+3,k-1)

        f(x-2,k-1)

m = set()

f(1,2)

print('Длина множества ',len(m))

Вывод: 7 2 2 -3 Длина множества 3

Но для f(1,68) программа работает очень долго, происходит много вызовов функции (причем с одними и теми же аргументами), чтобы сократить время, воспользуемся кэшированием.

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

Декоратор @lru_cache() модуля functools оборачивает функцию с переданными в нее аргументами и запоминает возвращаемый результат, соответствующий этим аргументам. Такое поведение может сэкономить время и ресурсы, когда "дорогая" или связанная с вводом/выводом функция периодически вызывается с одинаковыми аргументами.

Аргумент maxsize позволяет сохранить результаты последних вызовов @lru_cache(maxsize = 128).

Программа решения на языке Python

from functools import *

@lru_cache(maxsize = 64)

def f(x,k):

    if k==0:

        m.add(x)

        #print(x,end = ' ')

    else:

        f(x+3,k-1)

        f(x-2,k-1)

m = set()

f(1,68)

print(len(m))

Ответ: 69

Для эксперимента можно изменять значение аргумента maxsize и замечать время выполнения программы.

22.01.2024

Работа с файлами в Питоне. Задачи

Покажем на примере задачи, как считать данные из файла с помощью программы на языке Python.

Задача. В текстовом файле ex1.txt хранится набор чисел (в каждой строке одно целое число -1000<=x<=1000). Найти максимальное число.

Сохраним файл с данными и файл с программой в одной папке. Так не нужно будет указывать путь к файлу.

Откроем файл функцией open('ex1.txt') и отождествим его с переменной f. Далее будем пользоваться переменной f для обращения к файлу.

f = open('ex1.txt')

В данном файле 10 строк, в каждой из которых хранится целое число.

Запустим цикл и считаем строку методом readline()

f = open('ex1.txt')

n = 10

for k in range(n):

    s = f.readline()

Чтобы строку преобразовать в целое число применим функцию int().

f = open('ex1.txt')

n = 10

for k in range(n):

    x = int(f.readline())

    print(x)

Теперь осталось найти максимальное число.

m = -1000

f = open('ex1.txt')

n = 10

for k in range(n):

    x = int(f.readline())

    m = max(m,x)

print(m)

f.close()

Чтобы закрыть файл применим метод close()

Ответ: 723

Существует метод для считывания всех строк файла readlines(). В результате получаем список строк.

Линейная программа решения задачи на языке Python

f = open('ex1.txt')

a = list(map(int, f.readlines())) # map применяет int к каждой считываемой строке, list() возвращает список

n = len(a)

print('чисел всего:',n)

print('список чисел:', a)

print('максимум:', max(a))

f.close()

Задача на обработку строки, сохраненной в файле. Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD и т.д. ЕГЭ по информатике. Задание № 24. Читать

16.01.2024

Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD. ЕГЭ по информатике. Задание № 24. Решение на языке Python

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

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом abcd.txt. В ответе запишите длину искомой последовательности.

Как будем решать задачу

Воспользуемся алгоритмом, рассмотренном в публикации Найти наибольшую длину возрастающей последовательности.

Запустим цикл по длине строки  и будем сравнивать два соседних символа, если это действительно две соседние буквы алфавита, то будем увеличивать счётчик длины, в противном случае счетчик длины примем за 1. Затем найдем максимум среди значений счетчика длины. 

Как проверить, что два символа это соседние символы алфавита? 

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

Для вычисления кода символа будем использовать функцию ord().

Программа решения задачи на языке Python

f = open('abcd.txt')

s = f.readline()

k = 1

m = 1

for x in range(len(s)-1):

    if ord(s[x+1])-ord(s[x]) == 1:

        k+=1

    else:

        k = 1

    m = max(m,k)

print(m)

Ответ: 5

15.11.2023

Решаем уравнение с помощью программы на языке Паскаль и Python

 Задача. Имеется уравнение вида ax + b = 0. По введенным коэффициентам a и b найти корень уравнения (значение x).

Необходимо рассмотреть несколько случаев:

если а ≠ 0 — уравнение имеет единственный корень: х = -b / а;

если а = 0 — уравнение корней не имеет;

если а и b равны нулю, то корнем уравнения является любое число. 

Воспользуемся оператором ветвления.

if a<>0 then println('корень уравнения: ',-b/a)

          else

              if b=0 then println('любое число')

                     else println('корней нет');

Программа решения задачи на языке Паскаль

var a, b, x: real;

begin

  print('Введите коэффициенты a и b:');

  raedln(a,b);

  if a<>0 then println('корень уравнения: ',-b/a)

          else

              if b=0 then println('любое число')

                     else println('корней нет');

end.

Результат запуска программы

результат запуска

Программа решения задачи на языке Python

a, b = map(float, input('Введите коэффициенты a и b ').split())

if a!=0:

    print('корень уравнения: ',-b/a)

elif b == 0:

    print('любое число')

else:

    print('корней нет')


Задан проходной балл. Запрашиваются оценки абитуриента на трех экзаменах и сообщается о результате приема в институт.

Читать

Определить, делителем каких целых чисел из А, В и С является целое число N.

Читать

Дано трехзначное число. Определить, является ли сумма его цифр двузначным числом

Читать

Является ли число двузначным

Читать

Известен рост трех человек. Определить, одинаков ли их рост?

Читать

30.09.2023

Как ввести с клавиатуры в питоне несколько чисел. Метод split и функция map

Задача. Участники парусной регаты стартовали одновременно. На финише фиксировалось время прохождения маршрута каждой яхтой (в часах и минутах). Определите время победителя регаты (в часах и минутах). Известно, что соревнования проходили в течение 12 часов.

Программа получает на вход количество яхт, принимавших участие в регате N (1<=N<=50), затем для каждой яхты вводится два числа: часы и минуты, затраченные на прохождение маршрута.

Входные данные:

4

2 55

3 40

2 35

3 10

Выходные данные:

2 35

Исходные данные: N - количество яхт

h, m - количество часов и минут

Выходные данные: 

hw, mw - результат победителя

Как будем решать задачу

  1. Введем с клавиатуры число N.
  2. В цикле от 0 до N-1 введем пары чисел, переведем введенное время в минуты, определим минимум в минутах.
  3. Выполним перевод найденного минимального времени в часы и минуты.

Как ввести с клавиатуры несколько чисел? В нашей задаче в каждой строке вводится пара чисел.

Мы знаем, что input вводит строку. Мы также понимаем, что пара чисел разделена в строке одним пробелом. Необходимо разделить строку на две по пробелу. Для этого будем использовать метод split.

input().split()

Затем функцией map применим int к полученным строкам и сохраним в переменных h и m.

h, m = map(int, input().split())

Программа решения задачи на языке Python

n = int(input())

tmin = 12*60

for k in range(n):

    h, m = map(int, input().split())

    t = h*60+m

    if t < tmin:

        tmin = t

hw = tmin // 60

mw = tmin % 60

print(hw, mw)

Результат запуска программы





24.09.2023

Как ввести с клавиатуры целое число. Функция input. Python

Для ввода данных с клавиатуры будем использовать функцию input.

n = input()

В результате выполнения данной программы мы увидим приглашение к вводу данных, а именно строки.

Для того, чтобы увидеть текстовый комментарий, сделаем так:

n = input('Введи строку ')

Можно вывести строку на экран:

print('Вы ввели строку ',n)

Убедимся, что это строка:

n = n + ', а не число' #выполним сложение строк

print('Вы ввели строку ',n)



Но, как ввести число в Python?

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

n = int(input('Введи число '))

Можно вывести число на экран:

print('Вы ввели число ',n)

ввод целого числа. Python

Убедимся, что это число:

n = n + 100  #увеличим число на 100

print('Введенное число увеличили на 100  и получилось: ',n)




19.07.2023

Дано три целых числа. Определить, сколько из них отрицательных? (Паскаль, Python)

Задача. Дано три целых числа. Определить, сколько из них отрицательных?

Приведем решение задачи на языках программирования Паскаль и Python.

Как будем решать задачу

  • введем с клавиатуры три целых числа (a, b, c)
  • обнулим счетчик отрицательных чисел (k)
  • над каждым числом выполним проверку: если число отрицательно (строго меньше 0), то счетчик k увеличим на 1 (будем использовать ветвление и соответственно условный оператор в краткой форме)
    if a<0 then k:=k+1;
  • выведем ответ на экран

Программа решения задачи на языке Паскаль

var a,b,c,k:integer;

begin

  println('Введите три целых числа:');

  readln(a,b,c);

  k:=0;

  if a<0 then k:=k+1;

  if b<0 then k:=k+1;

  if c<0 then k:=k+1;

  println('Количество отрицательных чисел:',k);

end.

Результат запуска программы

Запуск программы

Программа решения задачи на языке Python

a,b,c = map(int, input('Введите три целых числа: ').split())

k = 0

if a<0: k+=1

if b<0: k+=1

if c<0: k+=1

print('Количество отрицательных чисел:',k)

Заметим, что по сути нужно повторить три одинаковых действия: ввести число и выполнить проверку, поэтому можно использовать следующий код (это позволит приблизиться к теме Циклы)

k = 0

a = int(input('Введите целое число: '))

if a<0: k+=1

a = int(input('Введите целое число: '))

if a<0: k+=1

a = int(input('Введите целое число: '))

if a<0: k+=1

print('Количество отрицательных чисел:',k)

Результат запуска программы


Дано натуральное число N. Есть ли в нем четная цифра

Читать

Определить, одинаков ли рост трех человек

Читать

Определить, делителем каких целых чисел является целое число

Читать

07.07.2023

ЕГЭ по информатике. Задание 8. Сколько существует шестнадцатеричных трехзначных чисел, в которых все цифры различны и никакие две четные или две нечетные цифры не стоят рядом? Решение на языке Python

Задача. Сколько существует шестнадцатеричных трехзначных чисел, в которых все цифры различны и никакие две четные или две нечетные цифры не стоят рядом?

Приведем решение задачи на языке Python

Как будем решать задачу

Получим все возможные трехзначные шестнадцатеричные числа функцией product - кортеж цифр x:

abc = '0123456789ABCDEF'

for x in product(abc, repeat = 3):

Функция product аналогична функции cartesian в PascalABC.NET.

Выполним проверку

  • первая цифра числа не равна 0 (число должно быть трехзначным): x[0]!='0'
  • все цифры числа различны (длина множества цифр равна количеству цифр в числе): len(set(x)) == len(x)
  • четность у соседних цифр различна: int(x[0],16) % 2 != int(x[1],16) % 2 and int(x[1],16) % 2 != int(x[2],16) % 2

Если все условия выполняются, будем копить счетчик k

Программа решения задачи на языке Python

from itertools import *

abc = '0123456789ABCDEF'

k = 0

for x in product(abc, repeat = 3):

    if x[0]!='0':

        if len(set(x)) == len(x):

            if int(x[0],16) % 2 != int(x[1],16) % 2 and int(x[1],16) % 2 != int(x[2],16) % 2:

                k+=1

print(k)

Ответ: 840


Как решить комбинаторную задачу про слова. Валя составляет шестибуквенные слова из букв слова ГРОЗА

Читать

Лера составляет 5-буквенные слова из букв слова ЛОГАРИФМ (перестановки)

Читать

Все шестибуквенные слова, составленные из букв МАНГУСТ, записаны в алфавитном порядке и пронумерованы (декартово произведение)

Читать

04.07.2023

Все шестибуквенные слова, составленные из букв МАНГУСТ, записаны в алфавитном порядке и пронумерованы. Комбинаторная задача. ЕГЭ по информатике. Решение на Python

Задача. Все шестибуквенные слова, составленные из букв МАНГУСТ, записаны в алфавитном порядке и пронумерованы.

Вот начало списка:

1. АААААА

2. АААААГ

3. АААААМ

4. АААААН

5. АААААС

6. АААААТ

7. АААААУ

...

Под каким номером в списке стоит последнее слово, которое не начинается с буквы У, содержит только две буквы М и не более одной буквы Г?

 Приведем решение данной задачи на языке Python.

Из букв алфавита МАНГУСТ составляются шестибуквенные слова. На каждом месте может встретиться любая буква. Получим все возможные слова функцией product (декартово произведение). 

Заведем счетчик - порядковый номер слова t. И если слово подходит под условие, то в переменную k сохраним значение порядкового номера слова. Таким образом значение переменной k будет обновляться и в итоге сохранит необходимый номер последнего подходящего слова.

Программа решения задачи на языке Python

from itertools import *

s = 'АГМНСТУ'

k = t = 0

for x in product(s, repeat = 6):

    t+=1 #порядковый номер слова

    if x[0]!='У' and x.count('М')==2 and x.count('Г')<=1:

        k = t #номер подходящего слова

print(k)

Ответ: 100810

Сколько существует шестнадцатеричных трехзначных чисел, в которых все цифры различны и никакие две четные или две нечетные цифры не стоят рядом

Читать

Настя составляет коды из букв слова НАСТЯ. Код должен состоять из 7 букв, буква Н должна встречаться в нём ровно два раза, буква А – как минимум один раз. Сколько различных кодов может составить Настя

Читать

Алексей составляет 5-буквенные слова из букв М, А, Г, И, С, Т, Р. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Алексей

Читать

01.02.2022

Преобразовать длину в метры и километры. Программа решения задачи на языке Паскаль и Python

Задача. Известна длина в сантиметрах. Преобразовать длину в метры и километры.

Как известно, в 1 метре 100 см, а в 1 км 1000 м, значит для вычисления метров необходимо длину в см разделить на 100, а затем полученное значение разделить на 1000.

Программа решения задачи на языке Паскаль

Var d:integer;k,m:real;

bgin

  readln(d);

  m:=d/100;

  k:=m/1000;

  writeln('длина в метрах ',m,' длина в километрах ',k);

end.

Программа решения задачи на языке Python

d = int(input())

m = d / 100

k = m / 1000

print('длина в метрах',m,' длина в километрах',k)

Как найти расстояние между двумя точками (язык Паскаль)

Читать

Одновременно навстречу друг другу выехали два автомобиля. Их скорости соответственно M и N км/ч. Расстояние между автомобилями в начальный момент времени составляло X км. Через сколько часов они встретятся?

Читать

Рассчитать цену товара в долларах. Программа на языке Паскаль и Python

Читать

30.01.2022

Как проверить, является ли число двузначным

Способы проверки двузначного числа на Pascal и Python

Постановка задачи

Необходимо определить, является ли заданное число двузначным (лежит в диапазоне от 10 до 99 включительно).

Решение на Pascal

Вариант 1: Использование составного условия

if (a > 9) and (a < 100) then 
  writeln('Число двузначное');

if (a >= 10) and (a <= 99) then
  writeln('Число двузначное');

Вариант 2: Использование операции in и множества

if a in [10..99] then
  writeln('Число двузначное');

Вариант 3: Математическая проверка

if (a - 9) * (a - 100) < 0 then
  writeln('Число двузначное');

Проверка чисел со знаком

if abs(a) in [10..99] then
  writeln('Число двузначное (по модулю)');

Решение на Python

Вариант 1: Проверка диапазона

if 10 <= a <= 99:
    print("Число двузначное")

Вариант 2: Проверка с учетом знака

if 10 <= abs(a) <= 99:
    print("Число двузначное (по модулю)")

Вариант 3: Использование range

if abs(a) in range(10, 100):
    print("Число двузначное")

Вариант 4: Проверка длины строки

if len(str(abs(a))) == 2:
    print("Число двузначное")

Сравнение подходов

Метод Pascal Python
Проверка диапазона (a>=10) and (a<=99) 10 <= a <= 99
Работа с отрицательными abs(a) in [10..99] 10 <= abs(a) <= 99
Альтернативные методы Математическая проверка Проверка длины строки

Рекомендации

  • Для Pascal наиболее читаем вариант с in [10..99]
  • Для Python оптимально использовать 10 <= a <= 99
  • Для работы с отрицательными числами всегда используйте abs()
  • Проверка длины строки в Python в целом полезна

Площадь и периметр прямоугольника. Программа решения задачи на языке Паскаль и Python

Как вычислить площадь и периметр прямоугольника: готовые программы с пояснениями

Формулы для расчетов

Перед тем как писать код, вспомним основные формулы:

  • Площадь прямоугольника S = a × b
  • Периметр прямоугольника P = 2 × (a + b)

Решение на Python с объяснением ввода данных

# Ввод данных: просим пользователя ввести две стороны прямоугольника
# Функция input() выводит сообщение и ждет ввода
# split() разделяет введенную строку по пробелам
# map(int, ...) преобразует строковые значения в целые числа
a, b = map(int, input('Введите длину и ширину прямоугольника через пробел: ').split())

# Вычисление площади (произведение сторон)
s = a * b

# Вычисление периметра (удвоенная сумма сторон)
p = 2 * (a + b)

# Вывод результатов с пояснениями
print(f'При сторонах {a} и {b}:')
print(f'Площадь прямоугольника равна: {s}')
print(f'Периметр прямоугольника равен: {p}')

Как работает ввод данных:

  1. Программа выводит приглашение к вводу
  2. Пользователь вводит два числа через пробел (например: 5 10)
  3. Метод split() разделяет строку на части по пробелу
  4. Функция map(int, ...) преобразует строки в числа
  5. Числа присваиваются переменным a и b

Решение на Pascal для сравнения

var
  a, b, s, p: integer;
begin
  writeln('Введите длину и ширину прямоугольника (через пробел):');
  readln(a, b);
  s := a * b;
  p := 2 * (a + b);
  writeln('При сторонах ', a, ' и ', b, ':');
  writeln('Площадь прямоугольника равна: ', s);
  writeln('Периметр прямоугольника равен: ', p);
end.