Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 16:53   #1
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми!

Дано n чисел, 3<=n<=1000, -1000<=xi<=10000. . Найти среди них два таких числа xa и xb, что их сумма равняется сумме всех других чисел, которые остались .
Входные данные:
В первой строке входного потока содержится одно число n. ВО второй строке входного потока содержится n чисел xi, разделенных пропуском.
Исходные данные:
В первую строку исходного потока вывести два числа xa и xb разделенных одним или больше пропусками. Если невозможно найти таких два числа - вывести числа 0 и 0.
Пример входных данных 1:
5
-5 2 5 3 5
Пример исходных данных 1:
2 3
Пример входных данных 2:
4
2 6 -4 1
Пример исходных данных 2:
0 0
Время работы программы не должно превышать 5 сек на Intel Core 2 Duo E2180.
Snake08 вне форума Ответить с цитированием
Старый 08.12.2008, 17:25   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
var i,j,n:integer;
    a:array[1..1000] of integer;
    flag:boolean;
function IsTrue(i,j:integer):boolean;
var m,sum:integer;
begin
IsTrue:=false;
sum:=0;
 for m:=1 to n do
  if (m<>i) and (m<>j) then sum:=sum+a[m];
if sum=(a[i]+a[j]) then  IsTrue:=true;
end;

begin
flag:=false;
writeln('Input n');
readln(n);
for i:=1 to n do
read(a[i]);
writeln;
for i:=1 to n do
 for j:=i to n do
  if i<>j then if IsTrue(i,j) then  begin
                                flag:=true;
                                writeln(i,' ',j);
                               end;
if not flag then writeln('0 0');
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2008, 18:12   #3
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

всьо хорошо спасиба!
Вот только на 1 тесте заваливается!
5
-5 2 5 3 5
а выводит:
2 4!
помоги а!
Snake08 вне форума Ответить с цитированием
Старый 08.12.2008, 18:16   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

выводятся индексы в массиве. Подпиши вместо
Код:
writeln(i,' ',j);
Код:
writeln(a[i],' ',a[j]);
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2008, 18:33   #5
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

большое спс!
Snake08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму всех чисел из промежутка от А до В, кратных 8 и 16 nickky2 Паскаль, Turbo Pascal, PascalABC.NET 8 05.12.2008 13:27
Я-юрист, есть задача - Найти сумму всех чисел из промежутка от А до В, кратные 13 и 5 Filosofijka Помощь студентам 1 24.11.2008 19:57
Найти два наибольших отрицательных числа Makarov Паскаль, Turbo Pascal, PascalABC.NET 8 14.06.2008 17:57
Найти числа,которые читаются слева-направо и справа-налево одинаково(например, 1001). Паскаль NikLik Помощь студентам 8 22.11.2007 23:00