Есть ответ 👍

Вам необходимо подсчитать сумму s(n) = 1 - 2 + 3 - 4 + … + (-1)n+1 *n. напишите программу, которая находит ответ за минимальное время и использует наименьший объем оперативной памяти. входные данные: одно целое число n (1 ≤ n ≤ 109) выходные данные: ответ s(n)

111
176
Посмотреть ответы 2

Ответы на вопрос:


Если следовать алгоритму вычисления, представленному в формуле, то программа будет такая: var   n,i,s: shortint ; begin   write ('n=');   readln (n);   s: =0;   for i: =1 to n do      if i mod 2 =0        then s: =s-i       else s: =s+i;   print (s) end. если же посмотреть на формулу внимательно и выявить закономерность, то можно увидеть, что  1) вычитаются только четные числа. и после каждого вычитания результат равен ровно половине вычитаемого числа (со знаком минус) 2) прибавляются только нечетные числа и  прибавление идет вслед за вычитанием (кроме 1), т.е. можно к результату последнего вычитания (см.п.1) просто прибавить n. также учитываем, что целые числа занимают меньше памяти, чем вещественные, поэтому для программы используем самый маленький целый тип с отрицательными значениями  shortint  (от  -128 до 127, что в данном случае нас вполне устраивает). помним, что значение переменной целого типа не может быть результатом деления, поэтому вместо обычного деления используем деление нацело (n div 2) итак: при нечетном n результат = -n div 2, при четном n: (так как у нас целочисленное деление, то n div 2 будет равно (n-1) div 2) результат будет = -(n div  2) + n или n-(n div 2) т.е. вся программа сведена всего к двум операциям по разным веткам условного оператора, что сделает ее быстрее и . к тому же не надо выделять память для переменной-счетчика. var   n,s: shortint; begin   write ('n=');   readln (n);   if n mod 2 =0     then s: =-n div 2     else s: =n-(n div 2);     print (s) end. можно увидеть и другую закономерность, что каждое сложение и идущее за ним вычитание одинаковый результат с разными знаками, т.е. при четном n также s=-n div 2, а при нечетном -   s=n div 2+1. но большой разницы это не даст.
viktoria383
4,6(64 оценок)

Program vuxesleneq; var i,o,p: integer; t,y,u,j,c: ireal; begin writeln('ввеите число для вычислени'); readln(t); writeln(''ввеите число для вычислени''); readln(y); writeln('введите знак'); redln(i); if i="+" then c: =a+b; writeln (c); if i="-" then c: =a-b; writeln (c); if i="*" then c: =a*b; writeln (c); if i="/" then c: =a/b; writeln (c); end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS