Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Костанян О.Г 6109г.(Задачи Тимуса).docx
Скачиваний:
2
Добавлен:
19.11.2019
Размер:
31.7 Кб
Скачать

Задачи с сайта ACM.TIMUS.RU

работу выполнил:

студент 1 курса,

группы 6109

Костанян Оганес Гарникович

дата: 13.10.2012г.

………………

1) 1000. A+B Problem

Вычислите a+b

Идеи решения:

присвоить переменным a,b любые значения и сложить друг с другом.

Решение:

Var a,b,c: Integer;

Begin

Readln(a,b);

c:=a+b;

Writeln(c);

End.

-----------------------------------------------------------------------------------------------------------------------------------------

2) 1068. Сумма:

Всё, что от вас требуется — найти сумму всех целых чисел, лежащих между 1 и N включительно.

В единственной строке расположено число N, по модулю не превосходящее 10000.

Выведите целое число — ответ задачи

Идеи решения:

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

Решение:

var a,s,i:integer;

begin

readln(a);

if a>0 then begin

for i:=1 to a do

s:=s+i;

end

else begin

for i:=a downto 1 do

s:=s+i;

end;

write(s);

readln;

end.

------------------------------------------------------------------------------------------------------------------------------------------

3) 1457. Теплотрасса.

Теплотрасса была построена ещё при Сталине, и поэтому представляет собой прямой тоннель без ответвлений. Любая её точка характеризуется своим магистральным смещением. Магистральное смещение начала теплотрассы, расположенного под зданием городской администрации, равно нулю. Расстояние между любыми двумя точками теплотрассы вычисляется как модуль разности их магистральных смещений.

Так уж получилось, что теплотрасса проходит подо всеми N пунктами, посещаемыми дедушкой. Для каждого канализационного люка, ведущего из теплотрассы прямо в один этих пунктов, известно его магистральное смещение P[i]. Дедушка может вылезать из теплотрассы только через эти люки. Если он попытается вылезти через какой-нибудь другой люк, то бдительные милиционеры сразу же задержат его как опасного бомжа.

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

Первая строка содержит целое число N (1 ≤ N ≤ 1000). Вторая строка содержит N целых чисел P[i] (0 ≤ P[i] ≤ 106).

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

Идеи решения:

Нам нужно найти среднее арифметическое расстояний, для этого используем цикл For, где через цикл вводим числа. При этом нужно не забыть, что переменная, к которой присваивается среднее арифметическое, должна быть вещественного типа. Чтобы вывести шесть знаков после запятой, нужно в операторе writeln после переменной “a” добавить :0:6.

Решение:

var n,m,i:integer;

a:real;

begin

a:=0;

readln (n);

for i:=1 to n do

begin

readln (m);

a:=a+m;

end;

a:=a/n;

writeln (a:0:6);

end.

------------------------------------------------------------------------------------------------------------------------------------------

4) 1263. «Выборы»

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

Исходные данные. В первой строчке ввода находятся натуральные числа N – число кандидатов (N<=10000) и M – число избирателей, принявших участие в выборах (M<=10000). Далее следует M строк, в каждой из которых находится номер кандидата, за которого проголосовал избиратель.

Результат. На выходе должно содержаться N строк, в i-ой строке должен быть указан процент избирателей, проголосовавших за i-ого кандидата (с точностью до 2-х знаков после запятой).

Идея решения:

Организуем только один массив - массив счетчиков, каждый элемент которого соответствует числу голосов, отданных за соответствующего кандидата (номер кандидата, за которого проголосовал избиратель это номер элемента массива счетчиков).

Решение:

Var a: array [1..10000] of Integer;

i, m, n, k: Integer;

Begin

Readln(n, m);

For i:=1 to n do ;

For i:=1 to m do Begin

Readln(k);

a[k]:=a[k] + 1;

End;

For i:=1 to n do

Writeln(a[i]/m*100:0:2, '%')

End.

------------------------------------------------------------------------------------------------------------------------------------------