Решаем вместе задачи 0001 и 0006
Анализируем основные ошибки, и разбираем варианты решения задач: первая задача, вторая задача.
_____________________________________________________________________________________
Ответы слушателей
Задача 1
Племянник спросил дядю, сколько тому лет. Дядя ответил:
«Если к половине моих лет прибавить A, то узнаешь мой возраст B лет тому
назад». Сколько лет дяде?
Формат входных данных
Во входном файле через пробел записано два целых числа A и
B (0 ≤ A, B ≤ 2 000 000 000).
Формат выходных данных
В выходной файл выведите, сколько лет дяде.
Пример
input.txt
|
output.txt
|
10 5
|
30
|
3 18
|
42 |
ВАРИАНТЫ ОТВЕТОВ СЛУШАТЕЛЕЙ:
Ответ 1
var a, b, c, d :integer;
begin
readln (a, c, b);
d:=(a+c)+b;
writeln (d);
end.
Ошибки
по условию задачи в файле input.txt две величины, а в решении считываются три! readln (a, c, b);
d:=(a+c)+b;
Подставляю в формулу в условии есть А и В. Что такое С?
d = (10 +?) + 5 = должна получить 30
PS
(от учителя): файлы даются для проверки, по два примера; в первой
строке - первый пример: значения А=10 и В=5 - входные, 30 - выходное
(дяде 30 лет); во второй строке - второй пример: А=3 и В=18 - входные,
42 - выходное (или 42 года дяде).
Ответ 2 (почти правильный)
var a, b, x: integer;
begin
readln (a, b);
x:=2*(a+b);
writeln (x);
end.
Очень хорошо, при подстановке значений из файла input.txt получаются значения output.txt
Интересно? задачу решили? или догадались по выходным значениям?
Самые простые задачи на олимпиаде по программированию решают с помощью уравнений и неравенств, записывая конечное выражение неизвестной величины через известные.
АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ
Я решаю задачу так:
составляю выражение, пусть дяде Х- лет, тогда
x/2 + A= x - B
это по условию задачи,
выражаю из уравнения Х
и получаю х=2*(А+В).
Задача решена, написана программа, но для проверки задачи в онлайн режиме нужно добавить возможность считывания входных данных из файла и запись ответа в файл.
Система PascalABC удобна на этапе отладки программы, но не работает с текстовыми файлами, поэтому для окончательного оформления задачи нужно использовать другую версию программы паскаль, например Turbo Pascal
Окончательное решение для отправки на олимпиадный портал должно быть записано в таком варианте:
var a, b, x: integer;
begin
assign(input,'input.txt'); //связывается с реальным файлом ('input.txt')//
reset(input); //открытие файла для
считывания //
assign(output,'output.txt');
rewrite(output); //перезапись или
создание файла //
readln (a, b);
x:=2*(a+b);
writeln(x:0:0);
close(input); //закрытие файла 'input.txt' //
close(output);
end.
Черепаха Тортилла поселилась на A-ом этаже нового дома.
Когда она идет гулять, то с этажа на этаж спускается за B минут, а поднимается ‑ за C минут. Сколько времени тратит бедное
животное, перемещаясь между этажами?
Формат входных данных
Во входном файле через пробел записано три целых числа A,
B и С (1 ≤ A ≤ 2 000,
0 ≤ B, С ≤ 2 000 000).
Формат выходных данных
В выходной файл выведите сколько времени тратит черепаха.
Пример
input.txt
|
output.txt
|
2 5 30
|
35
|
3 10 20
|
60 |
Ответ 1
var a, b, c, d: integer;
begin
readln (a, b, c);
d:=(a*b)+(a*c);
writeln (d);
end.
Ошибка 1
При решении задачи обязательно проверяем тестовые значения. Задача тест не проходит.
Подставляем в формулу a, b, c
d = (2*5) +(2*30) = ?
Результат не равен 35!
Аналогично подставляем вторые значения. Опять не совпадает ответ.
Значит d:=(a*b)+(a*c) выражение для задачи составлено неверно!
Читаем условие ещё раз и ищем ошибку!
Ответ 2 (можно отправлять на портал) var a,b,c, d: integer;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(a,b,c);
d:=(a-1)*b+(a-1)*c;
write(d);
close(input);
close(output);
end.
В системе тестирования задача набирает 60 баллов! (что уже неплохо)
Ответ 3 (практически идеальный)
{$N+}
var a,b,c, d: comp;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(a,b,c);
d:=(a-1)*b+(a-1)*c;
write(d:0:0);
close(input);
close(output);
end.
В системе тестирования задача набирает 100 баллов!
(найди отличия с предыдущим вариантом)
Вопрос: Не пойму зачем даны имя входного и выходного файла, что означает формат входных и выходных данных?
Ответ: прочитайте ещё раз внимательно правила проведения олимпиады.
Имя
входного и выходного файла нам необходимо, чтобы в консольном решении
задачи, при обращении к файлу, он - этот файл был найден. Если мы решаем
задачу для себя, то это имя может быть любым, а если это олимпиадные
задачи, то имя необходимо брать из условия, чтобы можно было запустить
тестовую проверку нашей программы в автоматическом режиме.
Формат
входных и выходных данных специально дан в условии, чтобы мы могли
проверить в каком виде, порядке программа выдает результат.
Еще раз самое основное из правил проведения олимпиады.