Сайт "Информатика в школе" перейти >>

 
On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор


Пост N: 50
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 15.08.06 22:35. Заголовок: Олимпиада для учителей информатики


Напоминаю всем учителям информатики, что 10 сентября 2006 года стартует олимпиада по информатике для учителей информатики. Задачи разработаны доцентом кафедры математической информатики факультета кибернетики Киевского национального университета имени Тараса Шевченко Медведевым Михаилом Геннадьевичем.
Поступило предложение привлечь не только учителей, но и учеников. Как вы на это смотрите?
С началом конкурса мы определились, осталось определиться со сроком подведения итогов. У кого какие предложения по этому поводу, учитывая, что будет 5 задач не высокого, по олимпиадным меркам, уровня сложности?
Каким образом можно будет поощрить победителя?
Внимание! Три задачи для разминки (с решениями), будут выложены на сайте http://www.inf777.narod.ru/ до 20 августа 2006 года.


Спасибо: 0 
Профиль Цитата Ответить
Ответов - 59 , стр: 1 2 3 All [только новые]





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 18.10.17 16:42. Заголовок: Конкурс по информатике "Отличник"


Конкурс по информатике "Отличник" - всероссийский дистанционный конкурс, в котором могут принять участие ученики 2-11 классов, а также студенты первых курсов учреждений среднего профессионального образования.

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

https://konkurs-otlichnik.ru/inf

Спасибо: 0 
Цитата Ответить
администратор


Пост N: 59
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.09.06 20:23. Заголовок: Re:


Итак, олимпиада началась, на данный момент получены и проверены решения трех участников соревнований. Лидером, набравшим 4,5 балла из 5 возможных стал Везиков Сергей Викторович, учитель ИВТ Краснокоммунарской средней школы.
Решения всех олимпиадных задач лично проверяет Михаил Медведев. Кроме того, мы постараемся каждому участнику выслать краткий разбор «полетов» по всем задачам.
И это еще не все хорошие новости. Михаил Медведев предложил каждые 2-3 дня выкладывать на форуме по одной новой задаче для решения. После истечения этого времени, Михаилом Медведевым будет дан подробный разбор задачи, а также будет указано на ошибки, допущенные при решении. Таким образом, у вас постоянно будет возможность заниматься решением олимпиадных задач и получать квалифицированную помощь.

Итак, первая задача:
Написать программу решения следующей задачи.
По заданному натуральному числу ищется его сумма цифр. Если сумма больше 9, то снова ищется ее сумма цифр. Процесс продолжается до тех пор, пока очередная сумма не станет меньшей 10. Необходимо найти это значение последней суммы.
Например, для числа 12345 сумма цифр равна 1 + 2 + 3 + 4 + 5 = 15. Ищем сумму цифр числа 15. Она равна 1 + 5 = 6. Результатом будет 6.

Желаю успеха!


Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 63
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 19:55. Заголовок: Решение первой задачи


Это решение первой задачи поступило от Везикова Сергея Викторовича. Напоминаю, что эти задачи рассчитаны для разбора решений именно на форуме, так что отправлять решения на e-mail нет необходимости. Размещайте свои решения прямо в этом разделе форума.
uses crt;
var
a,s:integer;
function sum(a:integer):integer;
var
i:integer;
begin
i:=0;
while a<>0 do begin
i:=i+(a mod 10);
a:=a div 10;
end;
sum:=i
end;
begin
clrscr;
readln(a);
s:=sum(a);
while s>10 do
s:=sum(s);
writeln(s);
readkey
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 3
Зарегистрирован: 11.08.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 13:53. Заголовок: Re:


Решения задач предлагается писать здесь же, в форуме.
Я постараюсь комментировать Ваши решения - здесь же, в форуме.

Решение предыдущей задачи я пока не даю, так как хотелось бы
увидеть Ваши предлагаемые решения - программы. Но уже подошло время
следующей задачи - вот ее условие:

Определить, сколько чисел в инервале от min до max (включительно) нацело делится на factor. Например, если min = 7, max = 24, factor = 3, то ответ будет 6, так как между числами 7 и 24 (включительно) находится 6 чисел, делящихся на 3: 9, 12, 15, 18, 21, 24.



Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 18.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 16:31. Заголовок: Решение предыдущей задачи


var
i,j,factor, max,min:Integer;
begin
Write('Input min=');ReadLn(min);
Write('Input max=');ReadLn(max);
Write('Input factor=');ReadLn(factor);
for i:=min to max do
if i mod factor=0 then inc(j);
Write('Output > ',j);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 4
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 16:48. Заголовок: To sedovmih


Попробуйте оптимизировать программу. Считайте, что значения min и max порядка 10^16 (в Паскале Вам пришлось бы воспользоваться типом Extended, в Си и уже в Делфи для этого есть 64 битовый тип).
В таком случае при использовании
for i:=min to max do
вы получили бы ошибку "Time Limit". Жду следующих вариантов Вашей программы.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 2
Зарегистрирован: 18.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 20:01. Заголовок: Re:To sedovmih


var
i,j,factor, max,min:Integer;
begin
ReadLn(min);
ReadLn(max);
ReadLn(factor);
i:=min;
repeat
if i mod factor =0 then
begin
min:=i;
j:=1;
end
until j<>1;
j:=((max-min) div factor)+1;
Writeln('Output > ',j);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 5
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.09.06 21:15. Заголовок: To: Решение первой задачи and sedovmih


Уважаемые участники форума! Задачи я подбираю начиная с простого
уровня. Но некоторые из них кроме очевидного решения, имеют
довольно интересное, простое олимпийское решение. Есть две категории:
техника - умение решать классические задачи классическим путем
и математика - умение находить именно "красивое " решение.

To Везиков, по поводу первой задачи:
попробуйте найти решение, вообще не использующее ни единого
цикла :-)

To sedovmih:
Ваша программа дает неверный ответ для min = 3, max = 4, factor = 5.
Ваша программа дает 1, а на самом деле ответ должен быть 0, так как
между 3 и 4 нет чисел, делящихся на 5.
На тесте min = 2, max = 8, factor = 2 программа зацикливается.

Я постараюсь в следующих задачах конкретнее задавать спецификацию
входа и выхода. Например, для второй задачи (с учетом целочисленного типа integer в Паскале)
имеют место ограничения -30000 <= min, max <= 30000,min <= max, 1 <= factor <= 30000.

Предлагаю следующий вариант работы: или Вы в какой-то момент предлагаете мне вывесить
свое решение с объяснением, или подождать, дать время подумать (но не более 2-3 дней :) ).


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 6
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.09.06 00:06. Заголовок: Re:


Предлагаю Вашему вниманию задачу посложнее.

Альберт и его две сестры Бетти и Карина делят имущество. Стоимости вещей, доставшихся в наследство, выписаны на куске бумаги и задаются массивом assets. Альберт берет ножницы и разрезает бумагу между некоторыми двумя числами. Потом Бетти таким же образом разрезает один из кусков. Далее Карина выбирает кусок с максимальной суммой. Из оставшихся двух кусков выбор делает Бетти. Последний кусок достается Альберту.
Каждый из участников при выборе старается получить максимальную сумму наследства. Сестры обижены на брата, и в своих выборах будут наказывать его, если только при этом не пострадает их прибыль. Например, если у одной из сестер есть два разные варианта получить одну и туже сумму имущества, то она выберет тот из вариантов, при котором ее сестра получит больше. Найти максимальную сумму, которую может обеспечить Альберт своим первым разрезом.

Давайте на начальном этапе пока не писать программу (просто на Паскале код выглядел бы
намного сложнее чем это можно реализовать на Си), а просто найдем алгоритм - как следует действовать
Альберту, чтобы обеспечить максимальную сумму своим первым разрезом. Поставлю задачу более
конкретно: если на куске бумаги написаны числа 1 1 1 1 1 1 1 1 1 (девять единиц),то как
должен действовать Альберт и какую максимально возможную сумму наследства он может получить?


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 7
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.06 12:35. Заголовок: Решение задачи про сумму цифр числа


Повторю еще раз условие задачи:

По заданному натуральному числу ищется его сумма цифр. Если сумма больше 9, то снова ищется ее сумма цифр. Процесс продолжается до тех пор, пока очередная сумма не станет меньшей 10. Необходимо найти это значение последней суммы.
Например, для числа 12345 сумма цифр равна 1 + 2 + 3 + 4 + 5 = 15. Ищем сумму цифр числа 15. Она равна 1 + 5 = 6. Результатом будет 6.

Решение:
Обозначим сумму цифр числа n через S(n). Число n делится на 9 тогда и только
тогда, когда S(n) делится на 9. В задаче требуется найти значение S(S(...S(n)...)),
которое меньше 10. Оно равно n mod 9, так как числа n и S(S(...S(n)...)) дают одинаковый
остаток при делении на 9. При этом если входное значение n = 0, то результат равен 0.
Если n > 0 и n mod 9 = 0, то результирующее значение равно 9.

program sum;
var
n:integer;
begin
readln(n);
if (n = 0) then writeln(0) else
if (n mod 9 = 0) then writeln(9)
else writeln(n mod 9);
end.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 8
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.06 12:48. Заголовок: Re:


У нас еще осталась одна нерешенная задача, но я хочу предложить следующую:

Для заданного числа n найти ближайшее целое, которое делится на b. Если таких чисел несколько, то найти наибольшее.

Например, если n = 100, b = 3, то ближайшим целым к 100, делящимся на 3, будет 99.
Если n = 5, b = 10, то ответом будет 10. По отношению к 5 числа 0 и 10 находятся на одинаковом расстоянии. Но по условию в таком случае требуется найти наибольшее число.
Если n = 4, b = 10, то ответом будет 0
Ограничения на входные данные: 0 < n <= 10^6, 2 <= b <= 500. В Паскале используйте тип longint. (операция ^ - это степень)

Жду Ваших решений :-)

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 9
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.06 13:05. Заголовок: Re:


Для умения эффективного решения олимпиадных задач следует обладать двумя способностями:
1. Алгоритмическое мышление - то есть умение математически решать задачу.
2. Техника. Для каждого языка она своя, в Си она на порядок выше, но пока остановимся на Паскале.

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

2. Все вы наверное знаете что такое двоичная система исчисления. Например, 7 = 111, 10 = 1010.
В задаче требуется по заданному натуральному числу n уничтожить последнюю единицу
в ее бинарном представлении. То есть если n = 7, то ответом будет 6. Пояснение: 7 = 111,
уничтожая последнюю единицу, получим 110, что является 6 в десятичном представлении.
Если n = 10, то ответом будет 8, так как 10 = 1010, уничтожаем последнюю единицу: 1000 = 8.
Для числа n = 8 ответом будет 0.

Я пока не хочу давать наводящих ответов, но и затягивать решения задач не хочется.
Давайте установим срок 3-4 дня, после чего я вывешу ответы.



Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.09.06 21:25. Заголовок: Меняем значения переменных местами


Честно говоря, мне уже попадалась где-то эта задача. Вот решение:
var
x,y: integer;
begin
x:= 1;
y:= 2;
x:= x+y;
y:= x-y;
x:= x-y;
writeln (x,y);
end.
На входе 1 и 2, на выходе 2 и 1.
Может стоит ввести сквозную нумерацию всех задач? Например 1А, 7В и т.д.?

Спасибо: 0 
Цитата Ответить



Пост N: 10
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.09.06 08:16. Заголовок: TO Учитель


Решение засчитывается!
Только вывод лучше писать так: writeln (x,' ',y); Так красивее.
Вообще многие предлагаемые мной задачи встречались. Задача про обмен местами значений, например, есть в книге Шеня.

Конечно, следующие задачи будем нумеровать - так действительно лучше. Чтобы не сбиться
с нумерации считаем, что все предложенные ранее здесь задачи были подготовительными и без номера.

У нас еще остались нерешенными две задачи и одно упражнение.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.09.06 09:24. Заголовок: Re:


Упражнение 2
var n,m,k:integer;
begin
readln(n); m:=1; k:=n;
while n mod 2<>1 do
begin n:=n div 2; m:=m*2 end;
writeln(k-m);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 05.10.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.10.06 09:49. Заголовок: задача2


program task2;
var n, b, c, d,i: integer;
begin
write('n=');readln(n);
write('b=');readln(b);
c:=n;d:=n;
if (n mod b)=0 then writeln('Otvet=',c)
else
begin
repeat
c:=c+1;
until (c mod b)=0;
repeat
d:=d-1;
until (d mod b)=0;
if abs(d-n)=abs(c-n) then writeln('Otvet=',c) else

if abs(d-n)<abs(c-n) then writeln('Otvet=',d) else
writeln('Otvet=',c);
end;
readln;
end.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 2
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.09.06 09:50. Заголовок: Re:


var min,max,factor:longint;
begin
readln(min,max,factor);
if min mod factor=0 then min:=min
else min:=min+(factor-min mod factor);
if min=max then writeln(1)
else if min< max then writeln((max-min) div factor+1)
else writeln (0);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 11
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.09.06 15:45. Заголовок: TO nikifor:


Упражнение 2 работает правильно. А попробуйте сделать его без цикла!
На то и олимпиадная задача, чтобы написать олимпиадное решение :-)
Подсказка: решение можно написать одним выражением.

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

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

program sum;
var
n:integer;
begin
readln(n);
if (n = 0) then writeln(0) else
if (n mod 9 = 0) then writeln(9)
else writeln(n mod 9);
end.

можно написать

program sum;
var
n:integer;
begin
readln(n);
writeln((n-1) mod 9 + 1);
end.

Код явно короче, и оно работает! Работает потому что в Паскале -1 mod 9 = -1,
хотя математически это будет 8.





Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.09.06 22:43. Заголовок: Re:


program factor;
var
kol,mx,mn,min,max,factor:integer;
begin
readln(min);
readln(max);
readln(factor);
mn:= min div factor;
mx:= max div factor;
kol:=mx-mn;
if (min mod factor)=0 then inc(kol);
writeln(kol);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 12
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.09.06 23:19. Заголовок: To Geliya


Ваша программа дает верные ответы, когда входные числа неотрицательны.
По условию входные числа целые. Например, Ваша программа не верна когда
min = -3, max = 0, factor = 5. Программа дает ответ 0, хотя должна 1 (имеется число 0, которое делится на 5).

Что-то никто не предлагает решение задачи про раздел имущества брата и двух сестер
(условие смотри выше). Задача сложная, но я прошу не писать программу, а просто дать
ответ для конкретного входного значения 1 1 1 1 1 1 1 1 1 (9 единиц).


Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 23.09.06 07:02. Заголовок: Re:


Задача 1-
uses crt;
var a,b,c:longint;
begin
clrscr;
readln(a);b:=0;
repeat
b:=b+(a mod 10);
a:=a div 10;
until(a<=0);
if b > 9 then begin
repeat
c:=c+(b mod 10);
b:=b div 10;
until(b<=0);
writeln(c);
end else writeln(b)
end.


Спасибо: 0 
Цитата Ответить



Пост N: 13
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.09.06 20:55. Заголовок: Re:


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

Уже прошло достаточно времени, поэтому привожу решение задачи
про минимум, максимум и делитель (min,max, factor):

var min,max,factor,res:longint;
begin
readln(min,max,factor);
while(min mod factor <> 0) do Inc(min);
while(max mod factor <> 0) do Dec(max);
if (min > max) then res := 0
else res := (max - min) div factor + 1;
writeln(res);
end.

Ответ на упражнение про уничтожение последней единицы в бинарном представлении:

var n,res:longint;
begin
readln(n);
res := n and (n-1);
writeln(res);
end.

Подумайте, почему битовая операция n and (n-1) уничтожает последнюю единицу в двоичном представлении.


Следующие предлагаемые задачи я буду нумеровать.

Задача 1. Имеется кипа из numCrates корзин. Ее следует загрузить в машины, вместительность каждой из которых равна loadSize. Если кипа имеет размер, больший loadSize, то она делится пополам и каждую из частей рекурсивно грузят в машины. Если размер кипы нечетный (numCrates = 2n + 1), то при ее делении пополам в одной кипе окажется n корзин , а в другой n + 1. Сколько потребуется машин, чтобы загрузить все numCrates корзин?

Задача 2. (Условие ее приводил ранее, но попыток решения еще не видел) Для заданного числа n найти ближайшее целое, которое делится на b. Если таких чисел несколько, то найти наибольшее.
Например, если n = 100, b = 3, то ближайшим целым к 100, делящимся на 3, будет 99.
Если n = 5, b = 10, то ответом будет 10. По отношению к 5 числа 0 и 10 находятся на одинаковом расстоянии. Но по условию в таком случае требуется найти наибольшее число.
Если n = 4, b = 10, то ответом будет 0

Задача 3. В задаче требуется перевести значение температуры из одной шкалы в другую. Известно, что шкалы находятся в линейном соотношении. То есть если t1 и t2 – одна и та же температура в разных шкалах, то существуют такие действительные числа a и b, что t1 = a * t2 + b.
Известны точка замерзания f1 и точка кипения воды b1 первой шкалы, а также точка замерзания f2 и точка кипения b2 второй шкалы. Необходимо перевести значение температуры t из первой шкалы во вторую.
Например, если f1 = 0, f2=100, b1 = 1, b2 = 101, t = 28 то результатом будет 29.
Помните, что результат является действительным числом!


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.09.06 18:45. Заголовок: Решение задачи №1


var numCrates,loadSize:integer;
function load(n,m:integer):integer;
begin
if n<=m then load:=1 else
if n mod 2=0 then load:=2*load(n div 2,m) else
load:=load(n div 2,m)+load(n div 2+1,m)
end;
begin
readln(numCrates,loadSize);
writeln('m=',load(numCrates,loadSize));
readln
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 2
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.09.06 19:07. Заголовок: Решение задачи 2


var n,b,d1,d2:integer;
begin
readln(n,b);
d1:=n-n mod b;
d2:=d1+b;
if n-d1 < d2-n then writeln(d1)
else writeln(d2);
readln;
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 3
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.09.06 21:01. Заголовок: Подход к решению задачи о наследстве


Альберт разрежет кусок на такие части: 1 1 1 и 1 1 1 1 1 1, далее Бетти, чтобы не обидеть себя разрежет больший кусок на 1 1 1 и 1 1 1, и все получат поровну, т.е. по 3, при всех других вариантах Альберту достается меньше. Альберт, разрезая кусок, должен отрезать часть, составляющую ближайшее целое к трети наследства.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 4
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.09.06 21:15. Заголовок: Неверно указала предыдущее решение про наследство


Нет, я не права. Если Альберт разрежет кусок на такие части: 1 1 1 и 1 1 1 1 1 1, далее Бетти, разрежет больший кусок на части 1 и 1 1 1 1 1, Карина заберет кусок 1 1 1 1 1, Бетти все равно достается 1 1 1, отрезанный Альбертом, тогда Альберту достанется всего 1. …Надо еще подумать.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 5
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.09.06 21:26. Заголовок: Снова наследство


Альберт, зная тактику сестер, должен отрезать кусок заведомо меньший трети. Т.е в нашем случае он разрежит на 1 1 и 1 1 1 1 1 1 1, тогда Бетти делит больший кусок, стремясь к равным частям, в данном примере 1 1 1 и 1 1 1 1, Альберту достается кусок 1 1.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 6
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.09.06 06:50. Заголовок: Решение задачи №3


Строим уравнение прямой, проходящей через точки (f1,f2) и (b1,b2), оно будет выражать зависимость t2(t1)

var f1,f2,b1,b2,t1,t2: real;
begin
readln(f1,f2,b1,b2,t1);
if b1<>f1 then t2:=(b2-f2)*t1/(b1-f1)+(f2*b1-b2*f1)/(b1-f1)
else t2:=t1;
writeln(t2:0:3);
readln
end.

Только вот как учесть ограничения на допустимость исходных данных?

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 14
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.09.06 08:31. Заголовок: To Nadegda:


1. Задача 1 о загрузке машин решена верно. Реализация рекурсивного варианта - именно то, чего хотел автор.
2. Задача о разделе имущества решена верно. Альберт в лучшем случае может получить кусок 1 1.
3. Задача 2 про округление чисел решена верно. НО: попробуйте ее решить при помощи лишь одного выражения,
не используя условных операторов.
4. Задача решена неправильно. Например, на тестах f1 = 17, f2 = 98, b1 = -123, b2 = 12, t1 = 22 Ваша программа дает 101.071,
а правильный ответ -114.6666667.
Или например для f1 = 0, f2 = 10, b1 = -10, b2 = 0, t1 = 2 Ваша программа дает 12.000, а должно быть -8.000.

Таким образом задача про раздел имущества и о загрузке машины (задача 1) считаются решенными.
Решения задач 2 и 3 принимаются еще пару дней.

Задача 4. В строке задано арифметическое выражение, содержащее однозначные числа и операции ‘+’, ‘-’ или ‘*’. Выражение не содержит пробелов. Необходимо найти значение этого выражения, если известно, что все операции имеют одинаковый приоритет и выполняются слева направо.
Например, для входной строки '2+2*2' ответ должен быть 8 (все операции имеют одинаковый приоритет!), а для
строки '4-8*9*1' ответом будет -36.




Спасибо: 0 
Профиль Цитата Ответить



Пост N: 3
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.09.06 08:47. Заголовок: Re:


Задача 1
var n,l,s:longint;
procedure p(n:longint);
begin
if n>l then begin
p(n div 2);
p(n - (n div 2));
end
else
inc(s);
end;
begin
readln(n,l);
s:=0;
p(n);
writeln(s);
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 4
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.09.06 09:36. Заголовок: Re:


Задача 1
var n,l,s:longint;
procedure p(n:longint);
begin
if n>l then begin
p(n div 2);
p(n - (n div 2));
end
else
inc(s);
end;
begin
readln(n,l);
s:=0;
p(n);
writeln(s);
end.

Задача 2

var n,b:longint;
begin
readln(n,b);
if n<n-abs(n mod b)+b/2 then
writeln(n-abs(n mod b))
else
writeln(n+b-abs(n mod b));

end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 7
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.09.06 18:06. Заголовок: Решение задачи 4


var s:string;r,o,err:integer;
begin
readln(s);
val(s[1],r,err);
delete (s,1,1);
while length(s)>1 do
begin
val(s[2],o,err);
case s[1] of
'+':r:=r+o;
'-':r:=r-o;
'*':r:=r*o;
end;
delete (s,1,2);
end;
writeln(r);
readln;
end.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 5
Зарегистрирован: 22.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.09.06 02:15. Заголовок: Решение задачи №3


var f1,b1,f2,b2,t1,t2:real;
begin
readln(f1,b1);
readln(f2,b2);
readln(t1);
t2:=(f2-b2)*(t1-b1)/(f1-b1)+b2;
writeln(t2);
end.
Тесты при решении задачи №3 неверные
Порядок ввода не соблюдается, в условии задачи №3

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 15
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.09.06 12:26. Заголовок: RE:


To Nadegda:
Задача о вычислении выражения решена верно.

To nikifor:
Извиняюсь. Вы правы. Ваша программа работает верно.

Задача 2 про округление чисел. Решение:
var
n,b,res:integer;
begin
readln(n,b);
res := ((n + b div 2) div b) * b;
writeln(res);
end.


Задача 4. В компьютерных системах несколько процессов могут одновременно читать данные, но только один процесс может выполнять операцию записи в течение одного такта времени. Строка trace содержит историю работы системы и состоит из символов ‘R’ (чтение) и ‘W’ (запись). Вычислить минимальное время, за которое могут быть произведены все операции procs процессами.
Например, если trace = 'RWWRRR', procs = 3, то ответом будет 4.
если trace = 'RRRRRRRRRR', procs = 4, то ответом будет 3.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 8
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.09.06 16:37. Заголовок: Решение задачи 4.2


var trace:string;
procs,i,k,kr:integer;
begin
readln(trace);
readln(procs);
k:=0;
kr:=0;
for i:=1 to length(trace) do
begin
if trace='w' then
begin
k:=k+1;
if kr<>0 then begin k:=k+1; kr:=0;end;
end;
if (trace='r') then
begin
kr:=kr+1;
if kr=procs then begin k:=k+1; kr:=0 end;
end
end;
if kr<>0 then k:=k+1;
writeln (k);
readln;
end.

При изменении порядка исходных данных результаты моей программы по задаче №3 тоже совпадают с вашими.

Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 67
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.09.06 21:24. Заголовок: Задача от админа


Мне понравилась задачка о дележе наследства. От себя тоже хочу «подкинуть» логическую задачу. Чтобы не путать нумерацию назову ее «Задача от админа».
Имеется 10 кучек монет, в каждой кучке по 10 монет. Одна из кучек состоит из фальшивых монет. Известен вес настоящей монеты и установлено, что каждая фальшивая монета на один грамм тяжелее настоящей. Монеты можно взвешивать на пружинных весах. Как за одно взвешивание отыскать кучку состоящую из фальшивых монет?
Правильного ответа я не знаю J, но у меня есть своя версия решения задачи.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 9
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.10.06 08:58. Заголовок: Решение задачи от админа


Из каждой кучки берем количество монет равное ее номеру. При взвешивании оказывается, что вес всего этого количества монет больше на N граммов, чем если бы все монеты были настоящими. N-номер кучки с фальшивыми монетами.
Решение придумала не сама, где-то читала.
Спасибо администратору за организацию интересного форума

Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 68
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.10.06 10:07. Заголовок: Решение задачи от админа


Я согласен с решением задачи про монеты, у меня был такой же вариант. Решение пришло в голову довольно быстро. Предложил решить эту задачу ученикам на уроке информатики, но пока решение они не нашли.
У меня есть задумка собрать побольше подобных задач и давать их ученикам в начале каждого урока. Дело в том, что в поиск правильного решения включаются даже самые нерадивые ученики. Если у кого-то есть сборник подобных задач, то прошу выслать мне на e-mail. Можно сначала давать по одной задачке на форуме (для учителей), а затем использовать их на уроках.
Что касается благодарностей по поводу форума, то идея создания этого раздела принадлежит исключительно Михаилу Медведеву, так что все благодарности направляйте в его адрес.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 16
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.10.06 20:46. Заголовок: Re:


To all: что-то я снова перепутал нумерацию задач.
Задача про процессоры и операции чтения/записи имеет номер 5.

To Nadegda:
Что-то Ваша программа на все мои тесты дает ответ 0.
Может вместо if trace='w' then Вы хотели написать if trace='w' then ...

Задача 6. Рассмотрим следующую телеигру. Имеется три двери, за двумя из которых спрятано по корове, а за третьими – приз. Игрок выбирает дверь, стараясь угадать, где находится приз. Ведущий после выбора игроком двери предлагает следующую сделку: он согласен открыть некоторую дверь, за которой находится корова в обмен на то, что игрок обязательно сменит дверь (поменяет свое мнение). Вопрос: как следует поступить игроку: менять свое мнение или нет?
Подсказка: Подсчитайте вероятность выигрыша приза в случаях, когда игрок меняет свое мнение и когда нет.

Задача 7. При покупке - продаже товаров объем, как правило, выступает стоимостной величиной. Например, если арбуз разделить на несколько частей, то сумма этих частей стоит столько же, сколько и весь арбуз. В некоторой стране к власти пришли математики и решили в качестве стоимостной величины считать не объем товара, а площадь его полной поверхности.
Сфера делится на n равных частей – долек осевыми разрезами. Какую прибыль в процентах получит математик, если он купит сферу целиком, а продаст ее отдельно по долькам? Известно, что n > 0.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 17
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.10.06 20:52. Заголовок: Re:


я понял - форум съедает квадратные скобки.
To Nadegda: Ваша программа правильна. Просто я вводил строку заглавными буквами, а Вы обрабатывали малые буквы.
Старайтесь придерживаться спецификации входных данных.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 10
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.10.06 04:59. Заголовок: Решение задачи №6


Вероятность отгадать у игрока при первой попытке составляет 1/3. Если предположить, что ведущий - лицо незаинтересованное в проигрыше игрока, и независимо от правильности выбора при первой попытке игрока ведущий предлагает сделку, и откроет дверь, за которой спрятана корова, то тогда у игрока вероятность выигрыша становится равной 1/2. Выходит, что игроку стоит принять условие сделки и поменять свой выбор.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 19
Зарегистрирован: 11.08.06
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.10.06 17:28. Заголовок: Re:


Эта фраза верна:
"Вероятность отгадать у игрока при первой попытке составляет 1/3. "
А вот вероятность угадывания в случае смены мнения равна не 1/2. Думайте.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 11
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.10.06 14:54. Заголовок: Решение задачи №7


Площадь каждой части составит s=4*Pi*R2/n+Pi*R2
Сумма площадей частей S=4*Pi*R2+n*Pi*R2
Прибыль составит (n*Pi*R2)/(4*Pi*R2)*100=25*n%

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 12
Зарегистрирован: 26.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.10.06 16:16. Заголовок: Решение задачи №6


Вероятность отгадать у игрока при первой попытке составляет 1/3, а открыть дверь с коровой - 2/3.
Если при первой попытке он выбрал дверь, за которой приз, тогда при участии в сделке он меняет выбор и на приз уже не попадает(вероятность выигрыша =0).
Если же при первой попытке он выбрал дверь, за которой корова (вероятность 2/3), тогда, принимая участие в сделке, он может выбрать приз с вероятностью 1/2. Общая вероятность выигрыша в этой ситуации составляет 2/3*1/2=1/3 - условная вероятность.
Выходит, что игроку не стоит принимать условие сделки и менять свой выбор: вероятность выигрыша приза в этой ситуации у игрока не растет, а при первом выборе приза вообще обращается в 0.



Спасибо: 0 
Профиль Цитата Ответить



Пост N: 5
Зарегистрирован: 06.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.10.06 22:17. Заголовок: ­Курсы


*PRIVAT*

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 6
Зарегистрирован: 06.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.10.06 22:18. Заголовок: ­Курсы


*PRIVAT*

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 7
Зарегистрирован: 06.09.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.10.06 22:21. Заголовок: ­Курсы


*PRIVAT*

Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 30.10.06 21:19. Заголовок: Вопрос


Хотелось бы узнать о курсах поподробнее.

Спасибо: 0 
Цитата Ответить
администратор


Пост N: 69
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.10.06 21:16. Заголовок: Задача 2 от админа


В этом разделе наступило полное затишье, но этому есть свои причины. Михаил Медведев, после поездки на полуфинал чемпионата мири по программированию, занят накопившимися текущими делами. В его отсутствие, на форуме, я предлагаю для решения такую задачу:
Каждый элемент квадратной матрицы размеренности NxN равен нулю, либо единице. Найдите количество «островов», образованных единицами. Под «островом» понимается группа единиц, со всех сторон окруженная нулями (или краями матрицы). Единицы относятся к одному «острову», если из одной из них можно перейти к другой «наступая» на единицы, расположенные в соседних клетках. Соседними являются клетки, граничащие по горизонтали или вертикали.
P.S. Эта задача была предложена для решения на районной олимпиаде школьников по информатике в Старополтавском районе Волгоградской области в прошлом, 2005 году.


Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.11.06 23:17. Заголовок: Задача


Что-то давно нет ответов на последнюю задачу. Неужели никто не может решить? Если я правильно понял, надо использовать стандартную процедуру обхода матрицы ладьей.

Спасибо: 0 
Цитата Ответить



Пост N: 3
Зарегистрирован: 10.12.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 13.12.06 00:15. Заголовок: Re:


inf777 пишет:

 цитата:
Каждый элемент квадратной матрицы размеренности NxN равен нулю, либо единице. Найдите количество «островов», образованных единицами. Под «островом» понимается группа единиц, со всех сторон окруженная нулями (или краями матрицы). Единицы относятся к одному «острову», если из одной из них можно перейти к другой «наступая» на единицы, расположенные в соседних клетках. Соседними являются клетки, граничащие по горизонтали или вертикали.


Кстати вполне реальная задача моделирования, нахождения количества кластеров перколяции. Правда до олимпиадной не дотягивает по определению, там очень простой рекурсивный алгоритм.

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

Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 78
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.12.06 23:16. Заголовок: Re:


LoW пишет:

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



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


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 6
Зарегистрирован: 10.12.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 15.12.06 23:16. Заголовок: Re:


inf777 пишет:

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


Все может быть, мне не нравится подход к олимпиадам по программированию, напрмер все классы в одной тележке, автоматизация тестирования и т.п. Правда это возможно потому, что я в свое время прошел через олимпиады но по физике, там совсем другие принципы, другой класс задач. Там (на нормальных олимпиадах) задачи на понимание сути явления, что происходит почему и как. Поэтому у нас даже хорошие программисты совсем не чувствуют мат. модели, то есть где ошибка модели, а где расчетов и т.п., ибо в таких задачах не проходит чистая алгоритмизация. А познания в физике у учеников падают по-моему вообще ниже плинтуса.

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 30.10.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.10.06 23:39. Заголовок: на счет курсов


на счет курсов пишите на маил: sapant@yandex.ru

Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 75
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.11.06 19:26. Заголовок: Решение задачи


Не дождавшись от участников форума вариантов решения последней задачи, я разместил ее решение в разделе сайта по адресу http://www.inf777.narod.ru/olym/olymp_2005.htm . По этому же адресу размещены решения других задач (районная олимпиада по информатике, 2005 год, Старополтавский район, Волгоградская область).

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 02.01.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 02.01.07 23:39. Заголовок: Re:


1 Мулюкова Лилия Ильдаровна 5 1
2 Везиков Сергей Викторович 4,5 2
АААА!!! Я в шоке товарищи коллеги
Лидировать столько времени и в итоге обставили на финише
Хочу второй этап

Спасибо: 0 
Профиль Цитата Ответить
администратор


Пост N: 85
Зарегистрирован: 28.07.05
Откуда: Россия, Волгоградская область
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.01.07 21:22. Заголовок: Re:


Здравствуйте, Сергей Викторович. Честно говоря, я думал, что Вы будете победителем олимпиады. С присуждением первого место не все прошло гладко. Дело в том, что одна из задач участницы, которая объявлена в итоге победительницей, выдавала неверное решении при использовании компилятора Turbo Pascal и мы, было, чуть не засчитали ей решение этой задачи. Но задача дала верный результат при использования Delphi и поскольку по условиям олимпиады не было ограничений на выбор компилятора, мы приняли это решение.
Что касается второго тура, то он возможно и будет когда-нибудь. Не думаю, что мы будем использовать в дальнейшем такие простые задачи как были в первый раз. Прошедшая олимпиада была только разминкой.
Лично Вам мы желаем удачи. Оперативности, с которой Вы решили все предложенные задачи, можно только позавидовать.


Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 23.09.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 23.09.07 18:50. Заголовок: Re:


Ну вот, а второго тура так и нет...

Спасибо: 0 
Профиль Цитата Ответить



Пост N: 1
Зарегистрирован: 09.11.09
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.11.09 10:20. Заголовок: олимпийские задачи и решении по информатике


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

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 59 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 6
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Сайт форума
www.inf777.narod.ru