Курс: Решение олимпиадных задач

ГЛАВА I

ЗАДАЧИ С РЕШЕНИЯМИ

Целочисленная арифметика. Проверка условий.

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

2. С клавиатуры вводятся числа до первого отрицательного числа. Определить максимальное число.
3. Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело делится на 39.
4. Найти количество четырехзначных чисел, делящихся на 777 и на свою последнюю цифру.
5. Найти количество пар натуральных двузначных чисел а и b, произведение которых в 10 раз больше их суммы.

6. Дан ряд чисел, в котором каждое следующее число больше предыдущего на 1. Количество чисел в ряду больше 2.
Первое число ряда равно 5. Найти последнее число ряда.
Должно выполняться условие: среднее арифметическое квадратов всех целых чисел — целое число.
7. Даны целые числа от 1 до n.
Посчитать среднее арифметическое этих чисел,
если оно превышает 5, то на экран вывести число на 100 меньше среднего арифметического.В противном случае на экран вывести сумму этих чисел.
8. Найти сумму всех четных двузначных чисел.
9. Проверить утверждение: число, вводимое с клавиатуры, нечетное, двузначное.
10. Найти первое трехзначное число, делящееся на 19 нацело.

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

Ответ:
ch=1
ch=2
ch=3
ch=55
ch=55
p=6

program if_01;
uses crt;
var ch, p: integer; i: integer;

  • {ch — числа;
    p — произведение чисел;
    i — счетчик чисел}

begin

clrscr;

p:=1;

for i:=1 to 5 do

{пять раз повторим цикл}

  • begin
    write(‘ch=’); readln(ch);
    if ch<10 then

{если число меньше 10 то домножаем на него произведение}

  • begin
    p:=p*ch;
    end;

end;

writeln(‘p=’,p);

end.

2. С клавиатуры вводятся числа до первого отрицательного числа. Определить максимальное число.

Ответ может быть таким:
15
123
-5
максимальное число = 123

program if_02;
uses crt;
var {a — число, вводимое с клавиатуры, m — максимальное число}

  • a: integer;
    m: integer;

begin

  • clrscr;
    m:=0;
    repeat
    • readln(a);
      if a>m then m:=a

    until a<0;
    writeln (‘максимальное число = ‘,m)

end.

3. Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело делится на 39.

Ответ: max число=4992

program if_03;
uses crt;
var ch:integer; p:boolean;

  • {ch — число;
    p — логическая переменная, определяющая условие целочисленного деления}

begin clrscr;

  • ch:=5000; p:=false;

{исходные значения}

repeat

  • p:=ch mod 39 =0 ;
    dec(ch)

{уменьшаем число на 1} until p=true ;

if p then writeln(‘ch=’, ch+1) else writeln(‘таких чисел нет’)

end.

4. Найти четырехзначные числа, делящиеся на 777 и на свою последнюю цифру.

Ответ: 2331 3885 4662 6216 6993 8547 9324

program if_04;
uses crt;
var ch, c:integer;
{с — последняя цифра числа ch}
begin

  • clrscr;
    for ch:=1000 to 9999 do
    • begin
      c:= ch mod 10;
      if (ch mod 777=0) and (c< >0) and (ch mod c=0) then writeln(ch);

    end;

end.

5. Найти пары натуральных двузначных чисел а и b, произведение которых в 10 раз больше их суммы.

Ответ:
a=12 b=60
a=14 b=35
a=15 b=30
a=20 b=20
a=30 b=15
a=35 b=14
a=60 b=12

program if_05_1; {вариант решения с двумя циклами For}
uses crt;
var a, b, s, p : integer;

{a, b — проверяемые числа;
S — сумма чисел;
P — произведение чисел}

begin

clrscr;

  • for a:=10 to 99 do

{для каждого двузначного числа a ищем двузначное число b}

  • for b:=10 to 99 do
    • begin
      s:= a + b; p:= a*b;

      if p=10*s then

{если соблюдается условие, то пара чисел выводится на экран}

  • writeln(‘a=’, a, ‘b=’:5, b);

end;

end.

——————————-

program if_05_2;{вариант решения с циклами Repeat и For}
uses crt;
var a, b, s, p : integer;

  • {a, b — проверяемые числа;
    S — сумма чисел;
    P — произведение чисел}


begin
clrscr;

  • a:=10;

{первое двузначное число}
repeat
for b:=10 to 99 do {второе двузначное число}

    • begin
      s:= a + b;
      p:= a*b;

      if p=10*s then

{если соблюдается условие, то пара чисел выводится на экран}

  • writeln(‘a=’,a,’b=’:5,b);

end; inc(a) ;
until a>99;

end.

6. Дан ряд чисел, в котором каждое следующее число больше предыдущего на 1. Количество чисел в ряду больше 2
Первое число ряда равно 5. Найти последнее число ряда.
Должно выполняться условие: среднее арифметическое квадратов всех целых чисел — целое число.

Ответ:

s=255 n=5 f=51 x=9
Среднее арифметическое квадратов всех целых чисел ряда = 51

program if_06;
uses crt;
var

  • i:integer;

{числа}
x:integer; {последнее число ряда}
s:integer ; {сумма квадратов}
n:integer; {количество элементов ряда}
f:real; {среднее арифметическое квадратов}

begin

clrscr;

  • s:=0;
    i:=5;

{первое число ряда}
n:=1;
repeat

  • s:=i*i+s;

{нахождение суммы квадратов}
f:=s/n; {нахождение среднего арифметического квадратов}
inc(n); {счетчик чисел}
inc(i); {следующее число} until (n>2) and (frac(f)=0);
x:=i-1;
writeln (‘x=’:5,x) ;
writeln( ‘Среднее арифметическое квадратов всех целых чисел ряда = ‘, f ) ;

end.

7. Даны целые числа от 1 до n.
Посчитать среднее арифметическое этих чисел,
если оно превышает 5, то на экран вывести число на 100 меньше среднего арифметического.
В противном случае на экран вывести сумму этих чисел.

Ответ может быть таким:

введите количество чисел ряда 9
сумма чисел равна 45

или

введите количество чисел ряда 10
величина на 100 меньше среднего арифметического -94.5

program if_07;
Uses crt;
var

  • i: integer;

{счетчик}
n: integer; {количество чисел}
s: integer; {сумма чисел}
sr: real; {среднее арифметическое}
msr: real; {величина на 5 меньше ср. арифметического}

begin clrscr;

  • write (‘введите количество чисел ряда ‘);
    readln (n);
    s:=0;
    for i:=1 to n do
    • begin
      s:=s+i;
      sr:=s/n;
      end;

    if sr>5 then

    • begin
      msr:=sr-100;
      writeln (‘величина на 100 меньше среднего арифметического’, ‘ ‘,msr);
      end

    else

    • writeln (‘сумма чисел равна ‘, s);

end.

8. Найти сумму всех четных двузначных чисел
Ответ:
S=2430.

program if_08 ;
uses crt;
var ch, S : integer;

{ch — число;
S — сумма чисел}

begin

  • clrscr;
    S:=0;

{сумма чисел сначала равна 0}

for ch:=10 to 99 do {складываем только двузначные числа}

  • If ch mod 2=0 then inc(S, ch);

writeln(‘S=’, S);

end.

9. Проверить утверждение: число, вводимое с клавиатуры, нечетное, двузначное.
Ответ:
15
Число, вводимое с клавиатуры, нечетное, двузначное: True.

program if_09 ;

uses crt;

var ch: integer;

p: boolean;

{ch — число;
p — проверка утверждения}

begin

  • clrscr;
    readln(ch);
    p:= (ch mod 2=1) and (ch>=10) and (ch<100) ;

writeln(‘число, вводимое с клавиатуры, нечетное, двузначное: ‘ , p);

end.

10. Найти первое трехзначное число, делящееся на 19 нацело.Ответ: Первое трехзначное число, делящееся на 19 нацело: 114.

program if_10;

uses crt;

var ch: integer;

{ch — проверяемое число}

begin

  • clrscr;
    ch:=100;

    while ch mod 19 < > 0 do inc(ch);

{пока число не разделится нацело на 19, увеличиваем его на 1}

write ( ‘Первое трехзначное число, делящееся на 19 нацело: ‘, ch);

end.

Целочисленная арифметика

  1. Подсчитать кол-во цифр в заданном натуральном числе.
  2. Найдите целые числа-палиндромы, которые при возведении в квадрат тоже дают палиндромы.
  3. Поменять местами первую и последнюю цифры числа.
  4. Дано нат. K. напечатать К-ю цифру последовательности 12345678910111213…,в которой записаны подряд все натуральные числа.
  5. Дано число N<=99. Дописать в начало и в конец числа цифру k.
  6. Проверить, есть ли в записи числа N в степени k цифра m.
  7. Найти наименьшее нат. число, представимое двумя различными способами в виде суммы кубов двух натуральных чисел.
  8. Доказать, что любую целочисленную денежную сумму большую 7 рублей можно выплатить без сдачи трешками и пятерками.
  9. Дано нат. K. напечатать К-ю цифру последовательности 149162536…, в которой записаны подряд квадраты всех натуральных чисел.
  10. Есть ли в записи числа 3 одинаковые цифры.
  11. Дано натур число n<=9999. Поменять порядок следования цифр.
  12. Перевод числа из 10-ой системы счисления в 2-ую.
  13. Найти все делители натурального числа N.
  14. Переставить цифры числа так, чтобы образовалось максимальное число, записанное теми же цифрами.
  15. Переставить цифры числа так, чтобы образовалось наименьшее число, записанное теми же цифрами.
  16. Составить программу перевода римских чисел в арабские.
  17. Дано натур. число N. Если это не палиндром реверсируйте его цифры и сложите исходное число с числом, полученным в результате реверсирования. Если сумма не палиндром, то повторите те же действия и выполняйте их до тех пор, пока не получится палиндром. Пример: 78+87=165, 165+561=726, 726+627=1353, 1353+3531=4884
  18. Дано натур. число N. Поменять порядок следования цифр в этом числе на обратный.
  19. Дано натур. число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение всех цифр совпадает с суммой цифр данного.
  20. Найти произведение цифр заданного целого четырехзначного числа. Число Результат: 2314 P = 24, -1245 P = 40
  21. Определить является ли заданная последовательность чисел а1, а2,…,аN монотонно убывающей. Случай Результат: N Вектор А, Является 3 (3, 2, 1) «Да», Не является 3 (2, 3, 1) «Нет»

Тематический план

  • Общее

    Общее

    • Внеурочная деятельность

      9 класс

  • Тема 1 Язык Python — основы. Целочисленная арифметика. Условная инструкция

    Тема 1 Язык Python — основы. Целочисленная арифметика. Условная инструкция

    • Установка среды разработки
    • Целочисленная арифметика. Деление с округлением вверх
    • Задачи на целочисленную арифметику. Задачи на формулу
    • Условная инструкция. Простые задачи. Задачи на шахматной доске
    • Решение задач на летоисчисление и работа с датами
    • Ссылка для скачивания среды разработки Гиперссылка

      Выберите вкладку Downloads и появиться кнопка для скачивания питона

  • Тема 2 Циклы и списки в python

    Тема 2 Циклы и списки в python

    • Циклы forи whileв python
    • Сложность алгоритма
    • Решение перебором
    • Списки в python
    • Генератор списка
  • Тема 3 Строки в python

    Тема 3 Строки в python

    • Задачи на строки
  • Тема 4 Функции в python. Рекурсия

    Тема 4 Функции в python. Рекурсия

    • Комбинаторные задачи
    • Рекурсивныйперебор
  • Тема 5 Сортировки и их применение

    Тема 5 Сортировки и их применение

    • Квадратичные сортировки
    • Быстрые сортировки
    • Сортировка подсчетом
    • Синхронная сортировка массивов
  • Тема 6 Линейный и бинарный поиск

    Тема 6 Линейный и бинарный поиск

    • Метод двух указателей
  • Тема 7 Динамическое программирование

    Тема 7 Динамическое программирование

    • Одномерное и двумерное ДП
    • Восстановление ответа в задачах ДП
    • Задача орюкзаке
  • Тема 8 Численные методы

    Тема 8 Численные методы

    • Проверка числа на простоту
    • Разложение числа на множители
    • Алгоритм Евклида
    • РешетоЭратосфена
  • Тема 9 Структуры данных (стек, дек, очередь) и их применения для решения задач

    Тема 9 Структуры данных (стек, дек, очередь) и их применения для решения задач

    • Задача о правильных скобочных последовательностях
    • Обратнаяпольская запись
  • Тема 10 Графы — введение. Обход в глубину

    Тема 10 Графы — введение. Обход в глубину

    • Графы, основные термины
    • Способы хранения графов в памяти компьютера
    • DFS
  • Тема 11 Кратчайшие пути в графах

    Тема 11 Кратчайшие пути в графах

    • BFS, алгоритм Дейкстры
    • Различныезадачи на графы
  • Тема 12 Итоговая работа

    Тема 12 Итоговая работа

    Анализ задач и выбор алгоритма решения, решение задачи из билета

Основные определения¶

Арифметический оператор (operator)

Специальный символ, выполняющий арифметические вычисления. В выраженииa * b символ * — оператор умножения, a и b — его операнды.

Оператор, принимающий два операнда, называется бинарным.Унарный оператор принимает один операнд. Пример унарного оператора: -1.

Выражение (expression)

Последовательность операторов и операндов, результат вычисления которойсводится к единственному значению. Простейшие выражения состоят из одногозначения и не содержат операторов: 42, «Hello, World!». Примерболее сложного выражения: 2 ** 32 1.

Приоритет операций

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

Например, результат выражения 2 + 2 * 2 — 6, поскольку приоритетоперации умножения выше, чем приоритет операции сложения. Изменить порядоквычислений в выражении можно с помощью скобок:

Ассоциативность

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

Различают правую (справа налево) и левую (слева направо) ассоциативность.Пример оператора с левой ассоциативностью — оператор деления /. Так,выражение 8 // 4 // 2 эквивалентно (8 // 4) // 2 и его результатравен 1.

Пример оператора с правой ассоциативностью — оператор возведения в степень:

>>> 2 ** 2 ** 3256>>> 2 ** (2 ** 3)256>>> (2 ** 2) ** 364

Функции перевода чисел в различные системы счисления¶

bin(x)¶oct(x)¶hex(x)

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

Пример:

>>> bin(255), oct(255), hex(255)(‘0b11111111’, ‘0o377’, ‘0xff’)>>> bin(29), oct(29), hex(29)(‘0b11101’, ‘0o35’, ‘0x1d’)

int(x, base)

С этой функцией мы познакомились на прошлом занятии. Сейчас дополним, чтовторым аргументом она может принимать основание системы счисления, в которойзаписано число x:

>>> int(‘101’)101>>> int(‘101’, 2)5

Задачи¶

  1. Дано целое десятичное число. Выведите его последнюю цифру.

  2. Дано целое десятичное число. Найдите число десятков в его десятичной записи.

  3. Дано трехзначное число. Найдите сумму его цифр.

  4. Пирожок в столовой стоит (a) рублей и (b) копеек. Определите,сколько рублей и копеек нужно заплатить за (n) пирожков.

    Приложение запрашивает у пользователя стоимость одного пирожка и количествопирожков. Пример:

    Введите стоимость одного пирожка.Рубли: 2Копейки: 60Количество пирожков: 3

    Приложение должно вычислить стоимость запрошенного количества пирожков.Пример вывода:

    Сумма заказа: 7 рублей 80 копеек
  5. Дано число (n). С начала суток прошло n минут. Определите, сколькочасов и минут будут показывать электронные часы в этот момент. Программадолжна вывести два числа: количество часов (от 0 до 23) и количество минут(от 0 до 59). Учтите, что число (n) может быть больше, чем количествоминут в сутках.

Домашнее задание¶

  1. Дано трехзначное число. Найти произведение его цифр.

  2. Даны значения двух моментов времени, принадлежащих одним и тем же суткам:часы, минуты и секунды для каждого из моментов времени. Известно, что второймомент времени наступил не раньше первого. Определите, сколько секунд прошломежду двумя моментами времени.

  3. Дано целое число (n). Выведите следующее за ним четное число.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: