Как ограничить время выполнения программы? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Задали написать программу, следующего содержания: "Для натурального числа сумма знакопеременного натурального ряда до числа n определяется: Сумма=-1+2-3+...+n*(-1)^n Найдите сумму для данного натурального числа n. Во входном файле записано натуральное число n (1 <= n <= 10^15). Вывести результат-найденную сумму." При этом существует важное ограничение в условии:"Ограничение по времени на тест 1 seconds (ограничение по памяти на тест 64 megabytes)" Я написал работающую программку:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    long long s, n;
    int i, p;
    FILE *inf;
    inf = fopen("input.txt", "rt" );
    fscanf(inf, " %lli", &n);
    s=0;
    p=1;
    for(i=1; i<=n; i++)
    {
        p=-p;
        s+=p*i;
    }
    printf("%lli\n", s);
    return 0;
}
но время её выполнения порядка 4-5 секунд при больших значениях n. Я так понимаю упрощение предполагает под собой избавление от цикла, но я не имею понятия как это осуществить. Прошу помощи! Заранее Спасибо!

Решение задачи: «Как ограничить время выполнения программы?»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
    long long n;
    FILE *inf = fopen("input.txt", "rt");
    fscanf(inf, "%lli", &n);
    if(n % 2)
        printf("%lli\n", (n - 1) / 2 - n);
    else
        printf("%lli\n", n / 2);
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Включаются необходимые заголовочные файлы: stdio.h
  2. Объявляется функция main(), которая является точкой входа в программу.
  3. Переменная n типа long long инициализируется значением, считываемым из файла input.txt.
  4. Производится проверка на четность числа n: если оно нечетное, то выполняется одно действие, если четное - другое.
  5. Выполняется действие, соответствующее четности или нечетности числа n.
  6. Выводится результат на экран.
  7. Функция main() возвращает 0, что означает успешное завершение работы программы.

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы