игнатова_Сергей1228
?>

Решить в паскале : 3 9. найти произведение целых нечетных чисел в промежутке [m, n], где m, n-произвольные вещественные числа(вводятся с клавиатуры 10. найти все степени числа 2 в промежутке [m, n], где m, n-произвольные целые числа (вводятся с клавиатуры).

Информатика

Ответы

kit036
Var
  m,n,p:real;
  k:integer;
begin
  Write('Введите через пробел начало и конец интервала: ');
  Read(m,n);
  p:=1;
  k:=Trunc(m);
  if (k mod 2)=0 then Inc(k); { Первое нечетное }
  n:=Int(n); { целочисленный конец интервала }
  while k<=n do
  begin p:=p*k; k:=k+2 end;
  Writeln('Произведение нечетных на интервале: ',p)
end.
 
Тестовое решение:
Введите через пробел начало и конец интервала: -3.8 8.2
Произведение нечетных на интервале: 315

var
  m,n,i,j:integer;
  p:real;
begin
  Write('Введите через пробел целочисленные границы интервала: ');
  Read(m,n);
  for i:=m to n do
  begin
    p:=1;
    if i=0 then Writeln('2^0=1')
    else
      if i<0 then
      begin for j:=-1 downto i do p:=p/2; Writeln('2^(',i,')=',p) end
      else
      begin for j:=1 to i do p:=p*2; Writeln('2^',i,'=',p) end
  end
end.

Тестовое решение:
Введите через пробел целочисленные границы интервала: -5 10
2^(-5)=0.03125
2^(-4)=0.0625
2^(-3)=0.125
2^(-2)=0.25
2^(-1)=0.5
2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256
2^9=512
2^10=1024
Рогов1996

=== Python 3.8.3 ===

def fastExp(b, n):

   def even(n):

       if n % 2 == 0:

           return True

       return False

   if n == 0:

       return 1

   if even(n):

       #Можно было написать return fastExp(b, b/2) ** 2, но операцию возведения в степень использовать нам запретили.

       res = fastExp(b, n/2)

       return res*res

   return b*fastExp(b, n-1)

def main():

   base = float(input())

   exp = int(input())

   print(fastExp(base, exp))

if __name__ == "__main__":

   main()

Предложенные тесты проходит. Сам алгоритм быстрого возведения в степень реализован в виде функции fastExp(b, n)

Yuliya Aleksandr686

/*Простейшая реализация. Подразумевается, что вводятся корректные данные, n вмещается в int, а a и результат - в double. Визуализация зависимости числа операций умножения от степени n для чисел от 0 до 5000 прилагается */

#include <iostream>

double s_pow(double a, int power)

{

       if (power == 0)

       {

               return 1;

       }

       if (power % 2 == 0)

       {

               return s_pow(a * a, power / 2);

       }

       return a * s_pow(a, power - 1);

}

int main()

{

       double a;

       int n;

       std::cin >> a >> n;

       std::cout << s_pow(a, n);

       return 0;

}


Быстрое возведение в степень Возводить в степень можно гораздо быстрее, чем за n умножений! Для этог

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Решить в паскале : 3 9. найти произведение целых нечетных чисел в промежутке [m, n], где m, n-произвольные вещественные числа(вводятся с клавиатуры 10. найти все степени числа 2 в промежутке [m, n], где m, n-произвольные целые числа (вводятся с клавиатуры).
Ваше имя (никнейм)*
Email*
Комментарий*