Главная Добро пожаловать на сайт! Регистрация

Вход

Приветствую Вас Гость | RSSСуббота, 27.04.2024, 15:23
Меню сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Подготовка к олипиаде по информатике

(Мендель А.В, Колегаева Е.М. Информатика 9-11 классы: подготовка учащихся к олимпиадам)

тема 1: Натуральные, целые, рациональные числа и операции над ними.

    Пример1.

Напишем условие того, что целая переменная А кратна целой переменной D

   В этом случае А делится на D без остатка, то есть остаток должен быть равен 0. Условный оператор на Паскале может быть записан следующим образом:

if A mod D = 0 then begin

     {действия}

end;

Пример 2.

Найдем последнюю цифру в десятичной записи положительного значения целой переменной А.

   Последняя цифра может быть получена как остаток от целочисленного деления переменной А на число 10. То есть присвоить переменной  В значение последней цифра А можно следующим образом:

 B:= A mod 10;

Пример 3.

Определить, сколько разрадов в десятичной записи положительного значения переменной А.

   Чтобы решить задачу, воспользуемся тем, что в разультате целочисленного деления переменной А на 10 от десятичной записи ее значения отбрасывается младший разряд. Так, пусть А:=12121; B := A div 10.  В результате В будет иметь значение 1212. Если поделить нацело на 10 число, то частное будет равно 0. Используя эти свойства, можно построить следующий алгоритм:

K:=0

Пока А>0

  нц

       К:=K+1

       A:=A div 10

  кц

   Печатать К

Здесь переменная К увеличивается на 1 при отбрасывании очередного младшего разряда числа А. Соотвествующая программа будет выглядеть так:

program prim3;

Var a,k: integer;

begin

write('введите положительное число , А=');

readln(a);

K:=0;

While a>0 do

begin

k:=k+1;

a:=A div 10

end;

writeln(' В десятичной записи введенного числа',k,'цифр')

end.


Пример 4.

Найти представление целого числа А в виде произведения простых множителей.

Алгоритм следующий: выбираем наименьшее положительное число I (I>1), на которое делится без остатка заданное число А, и делим на него А. Продожаем делить частное на I, пока оно кратно I. В противном случае, если частное не равно 1, находим следующее значение I, которому кратно частное, полученное в предыдущей операции. Если частное обратилось в 1, то разложение прекращается. Этот алгоритм можно реализовать следующей прогроаммой на Паскале:

program prim4;

var a,i: integer;

begin

write('введите положительное целое число, А=');

readln(a);

i:=2;

write(a,'='();

repeat

while a mod i=0 do

begin

wtite('*',i);

a:=a div i;

end;

i:=i+1;

until a=1;

writeln;

end.

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

   В олимпиадных  задачах часто нужно находить не только простые числа, но и все остальные множители заданного числа, напрмер при поиске совершенных чисел. Для этого можно использовать условие, сфоромулированное в примере 1. В таких задачах выбвает важно в целях оптимизации программы использовать  тот факт, что елси найден один делитель какого-либо числа, то сразу получен и еще один делитель этого же числа. Напрмер, число 45 делится на 3, то есть 45 mod 3 = 0, частным от деления 45 на 3  является число 15, которое также делитель 45. То есть 45 = 3*15. В каждой паре делителей один меньше  другого, либо оба делителя равны - число является квадратом этих делителей. Эти свойства позволяют ограничить перебор значений для поиска делителей числа квадратным корнем этого числа. и заменто ускорить работу программы.

   Следует учитывать то, что функция "квадратный корень" SQRT имеет вещественный результат. Чтобы получить соответсвующее целое значение, нужно использовать функцию оругления - ROUND. На пример: K:=ROUND(SQRT(A)).




   

Поиск

Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Copyright MyCorp © 2024Бесплатный конструктор сайтов - uCoz