Задачи! Pascal
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Здравствуйте, поскольку в форуме "Помогите решить" режко отвечают, вылаживаю тему сдесь.
Подскажите пожалуйста как решить задачи (олимпиады г. Алексеевки):
_________________________________
Задача №1. Преобразованная разность.
Пусть А - массив, состоящий из N элементов.Обозначим Max(a) и min(A).Вычислим сумму элементов S. Заменим каждый элемент массива на разницу S и этого элемента: Ai:=S-Ai,1<i<N.Такое преобразование назовем операцией Transform.
--Напишите программу, которая по массиву А вычислит разность max(В)-min(В), где В -массив, полученный в результате К-кратного применения операции transform к массиву А.
=============Технические требования==============
Входные данные
Первая строка входного файла "input1.txt" содержит целые числа N и K, где N - количество элементов массива B (2 < N < 10000), а K - количество применений операции Confuse к начальному массиву A, 1 < K < 100.
Вторая строка файла содержит N элементов массива B. Элементы массива B - целые числа, принадлежащие диапазону от -2 000 000 000 до 2 000 000 000.
Выходные данные
Единственная строка выходного файла "output2.txt" должна содержать целое число, которое есть разностью max(A) и min(A).
Пример входных данных
4 2
45 52 47 46
Пример выходных данных
7
_________________________________
Задача №2. Ноль или Еденица?
Последовательность из едениц и нолей строится по следующему правилу: сначала записывается еденица, к ней справа приписывается ноль, затем к полученной части справа приписывается полученная часть, но в которой еденицы заменены на ноли, а ноли на еденицы и т.д.
Например: 1 > 10 > 1001 > 10010110 > 1001011001101001 > ....
Определить, какая цифра находится в N-ой позиции.
=============Технические требования==============
1. Значение N хранится в файле "input2.txt" (1<N<1000000000)ю
2. Результат вычислений записать в файл "output2.txt"
Пример входных данных
13
Пример выходных данных
1
_________________________________________________________________
Заранее благодарен!
Подскажите пожалуйста как решить задачи (олимпиады г. Алексеевки):
_________________________________
Задача №1. Преобразованная разность.
Пусть А - массив, состоящий из N элементов.Обозначим Max(a) и min(A).Вычислим сумму элементов S. Заменим каждый элемент массива на разницу S и этого элемента: Ai:=S-Ai,1<i<N.Такое преобразование назовем операцией Transform.
--Напишите программу, которая по массиву А вычислит разность max(В)-min(В), где В -массив, полученный в результате К-кратного применения операции transform к массиву А.
=============Технические требования==============
Входные данные
Первая строка входного файла "input1.txt" содержит целые числа N и K, где N - количество элементов массива B (2 < N < 10000), а K - количество применений операции Confuse к начальному массиву A, 1 < K < 100.
Вторая строка файла содержит N элементов массива B. Элементы массива B - целые числа, принадлежащие диапазону от -2 000 000 000 до 2 000 000 000.
Выходные данные
Единственная строка выходного файла "output2.txt" должна содержать целое число, которое есть разностью max(A) и min(A).
Пример входных данных
4 2
45 52 47 46
Пример выходных данных
7
_________________________________
Задача №2. Ноль или Еденица?
Последовательность из едениц и нолей строится по следующему правилу: сначала записывается еденица, к ней справа приписывается ноль, затем к полученной части справа приписывается полученная часть, но в которой еденицы заменены на ноли, а ноли на еденицы и т.д.
Например: 1 > 10 > 1001 > 10010110 > 1001011001101001 > ....
Определить, какая цифра находится в N-ой позиции.
=============Технические требования==============
1. Значение N хранится в файле "input2.txt" (1<N<1000000000)ю
2. Результат вычислений записать в файл "output2.txt"
Пример входных данных
13
Пример выходных данных
1
_________________________________________________________________
Заранее благодарен!
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Задача 2. Решено методом индукции. Были выписаны двоичные представления позиций начиная слева и соответствующие значения: 0 или 1. Установлено, что если число бит в двоичном представлении позиции четно, то результат 1, иначе 0. Позиции нумеруются с 0. Следовательно задача сводиться к подсчету единиц в двоичном представлении числа N. Так как 1<N<1000000000, то для хранения N - 4 байта (integer или dword) и т.к. N>1, а позиции нумеруются с 0, то надо предварительно вычесть 1. Вот пример подсчета единиц в Integer:
Остальное - простая вещь, додумайся сам
Код: Выделить всё
function GetOnesesCount(N:Integer):Byte;
var x:Integer;
begin
Result := 0;
for x:=0 to 31 do Inc(Result, (N shr x) and 1);
end;
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
процент ответивших здесь будет ровно такой же, не у всех есть время решать чужие задачи и выкладывать готовые решения!" писал(а):поскольку в форуме "Помогите решить" режко отвечают
Существуют правила, если хотите получать ответы в разделе Delphi/Pascal, приведите хотябы какой-то свой код, вас, при необходимости, поправят

Задача №1.
Пусть:
А - исходный массив, A1,A2..Ak - массивы после преобразования
N - число элементов массива
S - сумма его элементов, S1,S2..Sk - суммы после k-го преобразования
Min, Max = минимальные и максимальные значения, тогда
S1 = S-a[1] + S-a[2] + ... + S-a[N], т.е. S1 = S*N - S = S*(N-1)
Sk = S*(N-1)^k
Ежу понятно, что после первого преобразования то, которое было минимальным - станет
максимальным и наоборот, но это не важно, т.к. нужно найти их разность - возьмем модуль.
Min1 = S-Min; Min2 = S1-min1 = S1 - S + Min и т.д.
Для Max - тоже самое, получаем, что надо:
1. Подсчитать исходную сумму S, Min и Мах, прочитать N и K
2. Написать функцию подсчета суммы элементов от K-го преобразования.
3. Подсчитать в цикле Min и Max, используя эту функцию.
4. ПОдсчитать модуль разности Min и Max
Вот собственно и все, есть ли проблемы написать код?
Насчет времени писать код Игорь Акопян очень точно подметил...
Пусть:
А - исходный массив, A1,A2..Ak - массивы после преобразования
N - число элементов массива
S - сумма его элементов, S1,S2..Sk - суммы после k-го преобразования
Min, Max = минимальные и максимальные значения, тогда
S1 = S-a[1] + S-a[2] + ... + S-a[N], т.е. S1 = S*N - S = S*(N-1)
Sk = S*(N-1)^k
Ежу понятно, что после первого преобразования то, которое было минимальным - станет
максимальным и наоборот, но это не важно, т.к. нужно найти их разность - возьмем модуль.
Min1 = S-Min; Min2 = S1-min1 = S1 - S + Min и т.д.
Для Max - тоже самое, получаем, что надо:
1. Подсчитать исходную сумму S, Min и Мах, прочитать N и K
2. Написать функцию подсчета суммы элементов от K-го преобразования.
3. Подсчитать в цикле Min и Max, используя эту функцию.
4. ПОдсчитать модуль разности Min и Max
Код: Выделить всё
Function GetSumm(S:Integer; n,k:Integer):Integer;
var x: Integer;
begin
result := S;
For x:=1 to k do result:=result*(n-1);
end;
Насчет времени писать код Игорь Акопян очень точно подметил...
Извините, не учел." писал(а):Вторая строка файла содержит N элементов массива B. Элементы массива B - целые числа, принадлежащие диапазону от -2 000 000 000 до 2 000 000 000.
Код: Выделить всё
Function GetSumm(S:Real; n,k:Integer):Real;
var x: Integer;
begin
result := S;
For x:=1 to k do result:=result*(n-1);
end;
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Спасибо developer, за задачи и Игорю Акопяну, он прав...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Somewhere, объясни, пожалуйста, поподробнее как 2-ю задачу решать. Ато что-то я не пойму...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Задача 2.
У каждой 1-чки или 0-ка в цепочке есть позиция, например N. Так вот, было подмечено, что если в представлении (двоичном) числа N число включеных...эээ...число единичек четно (т.е. 0, 2, 4...) то в цепочке 1-иц и 0-ей будет 1-ца. А если нечетно, то будет 0. Т.е. все эти 1-ки и нули можно вычислять в зависимости от их номера в цепочке. Функцию я привел. Но цепочка в твоей задаче нумеруется с 1, а не с нуля, поэтому нужно либо отнимать 1 от номера N, либо изменить условие на противоположное, например:
- если число бит в двоичном представлении позиции четно, то результат 0, иначе 1
Следует:
- прочитать номер позиции из файла (не напишу как, на форуме таких примеров оч. много)
- вычесть из нее 1
- подсчитать кол-во установленых в 1 бит в этом числе
- проверить четно оно (х mod 2=0, х and 1=0) или нет
- в зависимости от этого вывести 1 или 0 в файл.
Как еще объяснять? Вроде все ...
У каждой 1-чки или 0-ка в цепочке есть позиция, например N. Так вот, было подмечено, что если в представлении (двоичном) числа N число включеных...эээ...число единичек четно (т.е. 0, 2, 4...) то в цепочке 1-иц и 0-ей будет 1-ца. А если нечетно, то будет 0. Т.е. все эти 1-ки и нули можно вычислять в зависимости от их номера в цепочке. Функцию я привел. Но цепочка в твоей задаче нумеруется с 1, а не с нуля, поэтому нужно либо отнимать 1 от номера N, либо изменить условие на противоположное, например:
- если число бит в двоичном представлении позиции четно, то результат 0, иначе 1
Следует:
- прочитать номер позиции из файла (не напишу как, на форуме таких примеров оч. много)
- вычесть из нее 1
- подсчитать кол-во установленых в 1 бит в этом числе
- проверить четно оно (х mod 2=0, х and 1=0) или нет
- в зависимости от этого вывести 1 или 0 в файл.
Как еще объяснять? Вроде все ...
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Да, понятно. Извини за беспокойство, спасибо!
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Помогите прогу написать на паскале.Очень срочно.
Создать текст типа string. Определить самое короткое слово в каждом
предложении. Собрать их в новый текст, затем удлинить до средней длины
слова дублированием последней буквы.
Зарание спасибо!!!
Создать текст типа string. Определить самое короткое слово в каждом
предложении. Собрать их в новый текст, затем удлинить до средней длины
слова дублированием последней буквы.
Зарание спасибо!!!