Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Моделирование программ

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 03.05.2008, 12:58   #1
Постоялец
 
Аватар для maximus007
 
Регистрация: 26.07.2007
Адрес: Минск
Сообщений: 277
Репутация: 39
По умолчанию Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Народ, осталось два часа, залазьте в эту тему те, кто может и желает помочь решить олимпиаду. Очень сильно нужно!!!! Вот пока одна задача которую мы не можем решить. Писать можно на паскале, делфи, с, жаве:


Заданы четыре одинаковых по мощности множества целых чисел A, B, C,
D. Элементы этих множеств не превосходят по модулю 109. Различные эле-
менты одного множества могут иметь одинаковые значения. Рассчитайте
количество четверок (a, b, c, d), где a, b, c, d принадлежат соответственно
множествам A, B, C, D, таких, что a + b + c + d = 0.
Входные данные. В первой строке текстового файла SUMZERO.IN запи-
сывается величина M – мощность каждого из множеств (1 ≤ M ≤ 1000).
Каждая из последующих M строк содержит четыре числа – очередные эле-
менты множеств A, B, C, D.
Выходные данные помещаются в текстовый файл SUMZERO.OUT. Един-
ственная строка этого файла должна содержать искомое количество четве-
рок.
Пример входных данных Пример выходных данных
7
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
-45 201 342 -629
6
Пояснение. Сумма, равная нулю, достигается на следующих четверках (при-
ведены их позиции в соответствующих множествах):
(1; 2; 1; 2), (7; 2; 1; 2), (5; 4; 5; 4),
maximus007 вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Серьги из серебра с иолитом и фианитамиDS-H216UAFМебельный магазин: гамак круглый - Переходи на сайт!Сергей Катышев кино твМебельный магазин: журнальный столик на озоне - Переходи на сайт!


Старый 03.05.2008, 14:08   #2
Paradoksov
Неактивный пользователь
 
Регистрация: 31.08.2007
Сообщений: 7
Репутация: 1
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Delphi консольное приложение:

program Main;
{$APPTYPE CONSOLE}
uses
Windows,SysUtils;

type
PMas = ^TMas;
TMas = array [0..0] of integer;

var
F:TextFile;
N:integer; //Мощность множества

function GetSet:PMas;
var
P_var:PMas;
begin
GetMem(P_var,sizeOF(integer)*N);
Result:=P_var;
end;

function Condition(a,b,c,d:integer):bool;
begin
if (a+b+c+d)=0 then Result:=true else Result:=false;
end;

var
A,B,C,D:PMas;
i,j,k,t:integer;
count :integer;

begin
AssignFile(F,'SUMZERO.IN'); //ParamStr(1)
Reset(F);
Readln(F,N); //Сcчитать мощьность

//===Выделили память под множества=======
A:=GetSet;
B:=GetSet;
C:=GetSet;
D:=GetSet;
//=======================================

//===Ссчитали данные из файла============
for i:=0 to N-1 do
begin
Readln(F,A^[i],B^[i],C^[i],D^[i]);
end;
//=======================================

CloseFile(F);


//===Непостредственно работа программы===
count:=0;
for i:=0 to N-1 do
for j:=0 to N-1 do
for k:=0 to N-1 do
for t:=0 to N-1 do
begin
if Condition(A^[i],B^[j],C^[k],D^[t])
then inc(count);
end;
//=======================================


//===Запись в файл=======================
AssignFile(F,'SUMZERO.OUT');
Rewrite(F);

Writeln(F,count);

CloseFile(F);
//=======================================

//===Освободить память====================
FreeMem(D);
FreeMem(C);
FreeMem(B);
FreeMem(A);
//=======================================

end.

Добавлено через 1 минуту
Может я чего не догнал, но по представленным данныи ответ 6

Добавлено через 7 минут
Не все правильно, совпадает с вашими тремя ответами.

Последний раз редактировалось Paradoksov; 03.05.2008 в 14:16.. Причина: Добавлено сообщение
Paradoksov вне форума
 
Ответить с цитированием Вверх
Старый 04.05.2008, 00:53   #3
maximus007
Постоялец
 
Аватар для maximus007
 
Регистрация: 26.07.2007
Адрес: Минск
Сообщений: 277
Репутация: 39
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Блин, парень, большое тебе человеческое спасибо. Очень помогло. Твоя прога прошла 18 тестов из 20. Потом тайм-аут превысила, видимо на больших числах залагала. Но это все равно. На олимпиадах редко вааще когда кто решает абсолютно все задачи, да и еще правильно
maximus007 вне форума
 
Ответить с цитированием Вверх
Старый 25.05.2008, 18:26   #4
novaFrost
Неактивный пользователь
 
Регистрация: 25.05.2008
Сообщений: 7
Репутация: 0
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Где такая олимпиада проходит, что для решение "тупо перебор" оказывается верным ?
novaFrost вне форума
 
Ответить с цитированием Вверх
Старый 25.05.2008, 19:23   #5
Paradoksov
Неактивный пользователь
 
Регистрация: 31.08.2007
Сообщений: 7
Репутация: 1
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Предложи красивое решение. Очень интересно.

Я ни когда не участвовал в олимпиадах, поэтому не знал, что нужно, просто хотел ссылку на TMS компонент для Delphi, а для этого нужен был хотя бы одно сообщение. И чтоб не не флудить.
Paradoksov вне форума
 
Ответить с цитированием Вверх
Старый 28.05.2008, 10:50   #6
airyashov
Новичок
 
Пол:Мужской
Регистрация: 02.03.2007
Адрес: Казань
Сообщений: 15
Репутация: 2
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Цитата:
Сообщение от maximus007 Посмотреть сообщение
Блин, парень, большое тебе человеческое спасибо. Очень помогло. Твоя прога прошла 18 тестов из 20. Потом тайм-аут превысила, видимо на больших числах залагала. Но это все равно. На олимпиадах редко вааще когда кто решает абсолютно все задачи, да и еще правильно

Еще бы не привысило суммировать каждый раз, промежуточные суммы хранить надо, а сравненение не с 0 а с элементом D множества с обратным знаком
A+B+C=-D
airyashov вне форума
 
Ответить с цитированием Вверх
Старый 28.05.2008, 18:52   #7
Paradoksov
Неактивный пользователь
 
Регистрация: 31.08.2007
Сообщений: 7
Репутация: 1
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Цитата:
Сообщение от airyashov Посмотреть сообщение
Еще бы не привысило суммировать каждый раз, промежуточные суммы хранить надо, а сравненение не с 0 а с элементом D множества с обратным знаком
A+B+C=-D


Это-то все конечно очень хорошо, еще циклы развернуть, само собой убрать вызов процедуры Condition, только это всё не очень интересно. Куда интересней избавиться от четырех вложенных циклов. Вот это задача. А то, что ты предлагаешь скучно, совсем не интересно и все равно наверняка тайм-аут превысит.

Добавлено через 21 минуту
Кстати, я думаю, что

A+B+C=-D медленнее, чем A+B+С+D=0

Для A+B+C=-D, это три команды сложения add (или одна команда Lea, но при условии, что все три оператора в регистрах), потом команда neg (что бы получить -D), потом команда сравнения CMP, и переход, ну например, JE (или JNE)

Для A+B+С+D=0, это три команды сложения add (или одна команда Lea, но при условии, что все три оператора в регистрах), еще одна команда add и переход по флагу zf (команда JZ или JNZ)

Да во всех случаях комманда add должна имеет, по крайней мере, в качестве одного из операндов регистр, так было бы логично, если нет, то твой вариант будет быстрее.

Ну, конечно, в общем случае компилятор может все изгадить.

Последний раз редактировалось Paradoksov; 28.05.2008 в 19:13.. Причина: Добавлено сообщение
Paradoksov вне форума
 
Ответить с цитированием Вверх
Старый 31.05.2008, 11:36   #8
novaFrost
Неактивный пользователь
 
Регистрация: 25.05.2008
Сообщений: 7
Репутация: 0
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Цитата:
Сообщение от Paradoksov Посмотреть сообщение
Предложи красивое решение. Очень интересно.

Я ни когда не участвовал в олимпиадах, поэтому не знал, что нужно, просто хотел ссылку на TMS компонент для Delphi, а для этого нужен был хотя бы одно сообщение. И чтоб не не флудить.

Да я тоже 3 поста набирал.

На олимпиадах обычно действует правило: если решение очевидно - оно завалится по времени. А тут вот 18 из 20
novaFrost вне форума
 
Ответить с цитированием Вверх
Старый 15.06.2008, 00:56   #9
maximus007
Постоялец
 
Аватар для maximus007
 
Регистрация: 26.07.2007
Адрес: Минск
Сообщений: 277
Репутация: 39
По умолчанию Ответ: Помогите решить задания. ОЛИМПИАДА ИДЕТ!!!

Цитата:
Сообщение от novaFrost Посмотреть сообщение
Где такая олимпиада проходит, что для решение "тупо перебор" оказывается верным ?

Обыкновеннвм перебором прога стала бы на тесте 2-3, какие некоторые другие наши. Дык что нех
maximus007 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачки Vladylbkin Программирование 1 07.10.2009 22:44
Помогите решить проблему Lika_100 Скорая помощь 25 24.07.2009 09:06
Помогите решить проблему Jep Компьютерные проблемы 2 29.03.2009 00:48
Помогите решить проблему с USB anradR Компьютерные проблемы 6 02.03.2009 01:48
Помогите решить проблему Biosi Архив 3 08.12.2006 10:34

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:08. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.05945 секунды с 11 запросами