GOROD.cn.ua

Олимпиада по информатике ? или все же по математике ?

30 Ноября 2012 11:31   Просмотров: 2364
Метки: олимпиада, математика, информатика
Нравится Рейтинг поста: 0

Недавно подошел ко мне сын одного знакомого, попросил подучить его программированию в ПАСКАЛЕ.
ОК, сделаем, научим.
Садись.
Формулируй вопрос.

Хочу научится работать с файлами.
Ок, элементарно, всего 3 действия ...... бла бла бла,  свызяваем файловую переменную с именем файла, выбираем тип общения с файлом, пишем или читаем из файла, сохраняем файл.
Все просто.

Но не тут то было.

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

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

УСЛОВИЕ:
дан файл А
в нем через пробел записаны два числа (приведен пример даже)

Задание:
получить бесконечную переодическую дробь от деления этих чисел
период дроби заключить в скобки
и все это записать в новый файл Б

Допустим если получили такую дробь: 1,3181818
То нужно записать в файл вот так: 1,3(18)

Как видим, записать просто дробь - это элементарные знания по математике - поделил, преобразовал в СТРОКУ записал в файл и сохранил.

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

Но как мы видим, для решения этой задачи, начальных знаний по математике не достаточно.
Почему ?
Да по тому что .....

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

Вобщем попытались мы для начала создать логику, которая находила бы повторения цифр, начиная с ОДНОЙ и заканчивая ЦЕЛЫМ КУСКОМ цифр.

Через 30 минут писанины мы отбросили эту мысль, так как слишком здоровенная программа получилась.
Решили все же вспомнить математику.
Но вспомнить у нас не получилось.
Оказывается обычных знаний школьника не достаточно для решения этой математической задачи.
Мало того, он еще и не учил этого по математике.
А я то учил.
Да учил.
И начал я рыться в темных углах памяти.
Некоторые отрывки знаний все же появлялись на поверхности но и их было не достаточно.
======================================================================================

ПРИМЕР:
Определить длину периода десятичной записи дроби 1/n.

Решение. Период дроби равен периоду в последовательности остатков. Кроме того, в этой последовательности все периодически повторяющиеся все члены различны, а предпериод имеет длину не более n. Поэтому достаточно найти (n+1)-ый член последовательности остатков и затем минимальное k, при котором (n+1+k)-ый член совпадает с (n+1)-ым.



Для любознательных ))) : www.ega-math.narod.ru/Quant/Fracti.htm

В интернете найден был код программы.
=====================================================================================
var
ost,ch:array[1..1000]of integer;
m,n,n1,i,j,k,konec:integer;
begin
………readln(m,n);
………m:=m mod n; ----- сразу делим в столбик и находим первый остаток от деления
………n1:=n;
………write('period=') ;
repeat
………if n1 mod 2=0 then n1:=n1 div 2; ---------проверяем остаток от деления на 2 и на 5
………if n1 mod 5=0 then n1:=n1 div 5; --------- и тогда определяем целую часть от деления
until (n1 mod 2<>0)and(n1 mod 5<>0);

if n1=1 then writeln(0)else
begin
repeat
…….repeat
…………..m:=m*10; ---- множим М на 10, чтоб М стало больше Н
…….until m>=n;
…………..inc(i);
…………..ost[i]:=m mod n; ----------- дальше идет деление в столбик
…………..ch[i]:=m div n;
…………..m:=ost[i];
…………..for j:=1 to i-1 do
…………………………….if m=ost[j] ---- ловим момент , когда хватит искать
……………………………..then
…………………………………..begin
………………………………………..for k:=j to i-1 do ----- нужный кусок периода выводим
………………………………………..write(ch[k]);
………………………………………..konec:=1;
…………………………….……..end;
until konec=1;

end;
readln;
end.

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


Теперь вопрос к читателям:
Это задание по информатике или по математике ?

Дело в том, что и я когда-то бывал на олимпиадах, и решал задачки, но тогда в них математики было в меру, и 60% учеников могли решить большую часть заданий, в меру своих умений и с неким количеством ошибок в программах.

Через несколько лет я повел своих первых учеников на олимпиаду.
Столкнулся в с проблемкой ))) математики в заданиях напихали столько, что не каждый учитель решит задание.
Такие же приколы я заметил в универе, где так же удалось дважды попасть на олимпиады - задания опять были расчитаны на знания математики, к тому же хотя бы первого курса , но тут уже мы хоть имели в голове знания по математике, и само решение задачи уже свобилось к ЛОГИКЕ.

Вот так у нас в стране проходят олимпиады по информ......(математике)


Добавить в: