Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 6
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Июль » 22 » Некоторые способы решения задач
14:42
Некоторые способы решения задач
Предлагаю разбор олимпиадных задач, которые были предложены студентам математического факультета и которые не смогли их решить. Попробуем разобрать решение этих задач и помочь студентам в будущем выработать технологию и методику решения таких задач.Задача 1.Васе захотелось записать на диск песню в своем сопровождении и передать другу по Интернету. Сколько потребуется времени на передачу файла, если известны следующие данные: время записи в секундах, разрядность и частота звукового процессора, моно или стерео, а также скорость передачи по Интернету.Формат входных данныхВ строке через пробел передаются следующие данные: скорость передачи в бит/сек (от 100 до 109), время в секундах (от 1 до 109), разрядность в битах (8, 16, 32, 64) и частота в герцах (от 100 до 109), далее 1(моно) или 2 (стерео).Формат выходных данныхВывести время в формате: дд:чч:мм:сс - округлив секунды до целых.Пример входных данных100 10 16 1000 1Пример выходных данных00:00:26:40Решение: Совершенно простая даже линейная задача на технологию программирования. В чем проблема: найти формулу вычисления времени и правильно перевести ее в целое число, а именно, округлить, а не брать целое от деления; далее - определиться с типом данных, если перемножить все большие числа и разделить на наименьшую скорость получим число порядка 10 в 20. Для такого числа с такой точностью потребуется как минимум 64-разрядное целое беззнаковое число. И, наконец, нужно обратить внимание на вывод чисел: если число меньше 10, то выводить с первым нулем. Итак, получим такой код программы:var v,t,r,f,z,y,dd,hh,mm,cc:int64;begin  0',dd) else write(dd);  if hh<10 then write(':0',hh) else write(':',hh);  if mm<10 then write(':0',mm) else write(':',mm);  if cc<10 then write(':0',cc) else write(':',cc);{ writeln(cc+mm*60+hh*3600+dd*86400); }end.Эта программа работает меньше секунды.Задача 2.Ученые решили собрать компьютер и использовать в качестве разрядов системы счисления члены ряда Фибоначчи, которые вычисляются по правилу: 1'..'8','a'..'h']of char;r1,c1,r2,c2,g,r,c,f,d,h:char;flag:boolean;k,i,j:integer;{белый конь}function hodnw(r1,c1,r2,c2:char):boolean;begin      ; ;end      else   ; ;end      else   ; ;       end  else   ; ;       end  else   .' then  .' then  ; ;      end      else   .' then  .' then  ; ;      end      else   f:=c2;      if(c1<c2)then .' then  ; ;      end      else   f:=c2;      if(c1<c2)then .' then ; ;      end      else   ; ;end;{черный ферзь}function hodqb(r1,c1,r2,c2:char):boolean;begin     ; ;end;{белая пешка}function hodpw(r1,c1,r2,c2:char):boolean;begin     ))or        .'))     then begin ; ; end     else ))or        .'))     then begin ; ; end     else input.txt');reset(input);assign(output,'output.txt');rewrite(output);{заполняем массив игрового поля перед началом ;for to 'h' do begin ; ; 1',c]);end;for to '6' dofor to 'h' do ;{переменная k отвечает за ход: белые ) then n','p']) and (a[r2,c2] = '.') {первым ходом может быть только конем или пешкой,причем ее ход должен быть на пустую клетку}then begin N','P'] )and(a[r2,c2] = '.') then begin ) then begin r','n','b','k','q','p'] )and (a[r2,c2] in ['.','N','R','B','K','Q','P'])  then begin   R','N','B','K','Q','P'] ) and (a[r2,c2] in ['.','n','r','b','k','q','p'])  then begin   downto '1' do begin  for to 'h' do write(a[r,c]);  writeln; end else  write('No solution');close(output);end.  Сложнее всего придумать для этой задачи адекватные тесты, чтобы проверялись всевозможные неверные и верные ходы.Задача 4. В соревнованиях по бегу принимают участие N спортсменов (3 ? N ? 1000). Результаты забега занесены в массив по порядку номеров участников. Все результаты участников различны. Определить время (результат) бронзового призёра.ВводПервая строка содержит N - количество участников забега. Следующая строка содержит результаты каждого участника забега (через пробел) в последовательности номеров участников.ВыводНа экран выводится время (результат) бронзового призёра.Ввод 1 Ввод 2 101 7 4 5 8 9 2 3 6 10       68 7 5 4 3 2Вывод 1 Вывод 2 34Решение: Задача на массив, ее можно решить с помощью сортировки или просто запомнить первые три минимальных значения. Вот код программы:program project1;var
Просмотров: 607 | Добавил: admin | Рейтинг: 4.0/1
Всего комментариев: 0
avatar
Форма входа
Календарь
«  Июль 2014  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей