Как ограничить время выполнения программы? - C (СИ)
Формулировка задачи:
Добрый день!
Задали написать программу, следующего содержания:
"Для натурального числа сумма знакопеременного натурального ряда до числа n определяется:
Сумма=-1+2-3+...+n*(-1)^n
Найдите сумму для данного натурального числа n.
Во входном файле записано натуральное число n (1 <= n <= 10^15). Вывести результат-найденную сумму."
При этом существует важное ограничение в условии:"Ограничение по времени на тест 1 seconds (ограничение по памяти на тест 64 megabytes)"
Я написал работающую программку:
но время её выполнения порядка 4-5 секунд при больших значениях n. Я так понимаю упрощение предполагает под собой избавление от цикла, но я не имею понятия как это осуществить. Прошу помощи!
Заранее Спасибо!
#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; }
Решение задачи: «Как ограничить время выполнения программы?»
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; }
Объяснение кода листинга программы
В этом коде:
- Включаются необходимые заголовочные файлы:
stdio.h
- Объявляется функция
main()
, которая является точкой входа в программу. - Переменная
n
типаlong long
инициализируется значением, считываемым из файлаinput.txt
. - Производится проверка на четность числа
n
: если оно нечетное, то выполняется одно действие, если четное - другое. - Выполняется действие, соответствующее четности или нечетности числа
n
. - Выводится результат на экран.
- Функция
main()
возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д