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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2008, 12:17   #1
Pashtet
 
Регистрация: 04.11.2008
Сообщений: 7
Злость помогите ускорить работу программы...

Задача с олимпиады, решить сразу не смог... Написал прогу, но она работает при n=32000 более 5 секунд...
Код:
program zadacha1;
 var
  k,i,s: integer;
  n,m: longint;
  mas: ARRAY [1..32000] of integer;
 function pow(a,x:longint):longint;
  var
   t,i:longint;
  begin
    t:=a;
    for i:=1 to x-1 do
      t:=t*a;
      pow:=t;
  end;
 begin
  writeln('введите значение n от 1 до 32000:');
  read(n);
  if n>32000 then
   begin
    writeln('Значение n больше 32000, программа завершает работу.');
    readln;
   end else
    begin
     s:=0;
     for i:=1 to n do
      begin
       k:=i*pow(-1,i-1);
       mas[i]:=k;
       s:=s+mas[i];
      end;
    writeln(s+2);
  end;
end.
Исходное условие задачи: с клавиатуры вводится n, от 1 до 32000. Надо посчитать сумму элементов: +1-2+3-4+5...n. Ограничение по времени 5 секунд.

Последний раз редактировалось Pashtet; 25.11.2008 в 22:18.
Pashtet вне форума Ответить с цитированием
Старый 25.11.2008, 12:29   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

можно полное условие задачи?
это что:
Цитата:
+1-2+3-4+5...n
?
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 25.11.2008, 12:46   #3
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

странная у вас олимпиада однако.
писал в дельфях.
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

var s:int64;
    i, n:integer;

begin
  s := 0;
  readln(n);
  for i:=1 to n do
   s:= s + i;
  writeln(s);
  readln;
end.
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 13:01   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

если я правильно понял задачу то решение такое:
Код:
var n,s:longint;
begin
  readln(n);
  if n mod 2=0 then 
    s:=-n div 2
  else
    s:=(n+1) div 2;
  writeln(s);
end.
Цитата:
странная у вас олимпиада однако.
олимпиады бывают разные)
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 25.11.2008, 13:45   #5
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

упс. минус за плюс принял)) извиняюсь
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 22:12   #6
Pashtet
 
Регистрация: 04.11.2008
Сообщений: 7
Смех А ларчик просто открывался...

Спасибо, сразу не дошло... полез в алгебру и запутался... это самая легкая задача... над более сложными еще думаю, как что-нить надумается попрошу проверить(исправить)! Спасибо всем!
Pashtet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ускорить загрузку списка ListBox из txt-файла? Dux Компоненты Delphi 24 30.10.2008 19:02
Как ускорить работу с сетевой БД Ramires БД в Delphi 3 21.08.2008 12:16
Как ускорить загрузку битмапа в tImage Altera Мультимедиа в Delphi 10 24.03.2008 17:39
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12
Помогите пожалуйста ускорить работу по реконструкции моста Геодезистка Помощь студентам 10 07.10.2007 00:05