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

Читать

24.05.2023

Дано натуральное число N, есть ли в нем четная цифра. Язык Паскаль. PascalABC.NET

 В данной статье рассмотрим способы решения задачи о цифрах заданного натурального числа.

Задача. С клавиатуры вводится натуральное число N. Определить, есть ли в нем четные цифры?

Четные цифры это: 0, 2, 4, 6, 8

1 способ

f:=false;

while N<>0 do

 begin

  d:=N mod 10;

  if d in [0,2,4,6,8] then f:=true;

  N:=N div 10;

 end;

 if f then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

За значение флага f приняли ЛОЖЬ - четных цифр нет в числе. Выделили цифры числа оператором цикла while. Если цифра принадлежит множеству четных цифр, то значение флага изменяем на ИСТИНУ.

За циклом осуществляется проверка флага. Если флаг принял значение ИСТИНА, то в числе есть четные цифры, в противном случае нет.

Комментарии

  • логическое значение ЛОЖЬ - false
  • логическое значение ИСТИНА - true
  • для хранения логических значений используются переменные типа boolean
  • оператор вхождения элемента в множество - in

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

var N,d:integer;

    f:boolean;

begin

  print('Введите натуральное число N:');

  readln(N);

  f:=false;

  while N<>0 do

  begin

    d:=N mod 10;

    if d in [0,2,4,6,8] then f:=true;

    N:=N div 10;

  end;

  if f then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

end.

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


2 способ

Используем модуль School, функцию digits и методы динамических массивов.

С помощью функции digits получим список цифр числа, преобразуем список к массиву, найдем в полученном массиве четные цифры, преобразуем полученную последовательность в массив и вычислим его длину. Если длина полученного массива четных цифр не равна 0, то ответ Да, иначе Нет.

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

uses school;

var N,p:integer;

begin

  print('Введите натуральное число N:');

  readln(N);

  p:=digits(N).ToArray.Where(k -> k in [0,2,4,6,8]).ToArray.Length;

  if p<>0 then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

end.

Комментарии:

  • Условие k in [0,2,4,6,8] можно изменить на обычную проверку: остаток от деления на 2 равен 0? k mod 2 = 0
  • Данная программа является линейной и не использует цикл для выделения цифр числа.

3 способ

Преобразуем число в строку. Выполним проверку вхождения символов '0', '2', '4', '6', '8' в полученную строку.

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

n = int(input())

n = str(n) #функция str преобразует числовое значение в строковое

f = ('0' in n) or ('2' in n) or ('4' in n) or ('6' in n) or ('8' in n)

if f:

    print('yes')

else:

    print('no')


07.04.2023

Как инвертировать двоичный код. На примере задачи. Язык Паскаль. PascalABC.NET

 Задача. Автомат обрабатывает натуральное число N (1<=N<=255) по следующему алгоритму:

  • Строится восьмибитная двоичная запись числа.
  • Все цифры двоичной записи заменяются на противоположные (1 на 0, 0 на 1).
  • Полученное число переводится в десятичную запись.
  • Из нового числа вычитается исходное, полученная разность выводится на экран.

Какое число нужно ввести в автомат, чтобы в результате получилось 125?

В первую очередь разберемся, как инвертировать двоичную строку.

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

Пример:

s:='ОРИСОРИС';

s:=s.replace('РИС','ЛА');

Результат: s = ОЛАОЛА

Все подстроки РИС заменились на подстроки ЛА.

Тогда чтобы инвертировать двоичный код, нужно заменить все символы 1 на *, затем все символы 0 на символы 1, а затем все символы * на символы 0.

Пусть s = 101

1) все символы 1 заменим на *

s = *0*

2) все символы 0 заменим на 1

s = *1*

3) все символы * заменим на 0

s = 010

Сделаем это в одну строку:

s:=s.replace('1','*').replace('0','1').replace('*','0');

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

  • Запустим цикл по числам N
  • Выполним перевод числа N в двоичную систему счисления
  • Доведем разрядность двоичного кода до 8 (число восьмибитное)
  • Инвертируем полученное двоичное число
  • Выполним перевод полученной строки в десятичную систему счисления
  • Вычислим разность нового числа и исходного
  • Выполним проверку, если разность равна 125, то выводим число N на экран
Программа решения задачи на языке Паскаль

uses school;

var n,n1:integer; s,s1:string;

begin

 for n:=1 to 255 do

   begin

  s:=bin(n);

  s:='0'*(8-s.Length)+s;

  s1:=s.Replace('1','*').Replace('0','1').Replace('*','0');

  n1:=dec(s1,2);

  //println(s,s1);

  if n1-n=125 then println(n);

  end;

end.

Ответ: 65