Есть ответ 👍

9. дано действительной число a. не пользуясь никакими другими арифметическими операциями, кроме умножения, получить а5 и а13 за пять операций.

245
335
Посмотреть ответы 2

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

soldatgtr
4,7(49 оценок)

Var a,b,c,d,e,f: real; beginb: =a*a; c: =b*b; d: =c*c; e: =d*c; f: =e*a; write('a^13=',f: 0: 5); readlnend.

Целочисленная арифметика хороша тем, что вычисления в ней точны. но взамен она требует для представления чисел достаточного большого количества байт и не случайно от переменных типа byte и integer, которые в памяти занимали 1 и 2 байта соответственно, создатели трансляторов с языка паскаль пришли к четырехбайтному longint, а впоследствии и к восьмибайтному int64. максимальное число, которое можно представить в longint, равно 2 147 483 647, а в int64 оно равно 9 223 372 036 854 775 807. много ли это в применении к нашей ? нам надо найти и вывести произведение четырехзначных чисел, значение которых не превышает 5000. допустим, что все они равны 5000 и тогда количество членов в таком произведении может быть оценено при несложного расчета. итак, мы можем получить произведение максимум пяти таких чисел. а если использовать longint - вообще всего два числа: но это по верхнему пределу. по нижнему, при значении, равном 1000, эти оценки увеличиваются до 6 и 3 чисел соответственно (достаточно количество разрядов в максимально представимом числе разделить на 3). что показывают эти расчеты? всего лишь непригодность стандартной целочисленной арифметики языка паскаль (а также других традиционных алгоритмических языков) для решения поставленной в общем случае. беда еще и в том, что большинство трансляторов строят программу так, что в ней переполнение разрядной сетки (т.е. выход числа за отведенный ему диапазон представления) по умолчанию не контролируется. другими словами, есть риск получить совершенно неверный результат и даже не подозревать об этом! на может прийти арифметика с плавающей точкой, пригодная для отображения действительно огромных чисел. но у неё есть свой недостаток - она неточна. в языке паскаль тип double может оперировать числами до приблизительно , а вот количество точных цифр при этом составит 15-16. но даже такая точность выше, чем дает стандартный тип longint. на основании всего вышеизложенного и с учетом того, что тип int64 реализован далеко не во всех версиях языка паскаль,  можно принять следующий алгоритм: 1. получаем искомые числа, генерируя не более, скажем, 50 элементов. я считаю, что для любого разумного решения такого количества чисел будет достаточно (мы просто не будем допускать, чтобы к превышало 50). 2. нелепый критерий отбора чисел (квадрат первой цифры меньше квадрата последней цифры числа) заменим разумным. ведь цифра - суть однозначное число, а если квадрат одного числа меньше квадрата второго, то и сами числа находятся в таком же соотношении, поэтому зачем возводить в квадрат? . итак, критерием отбора будет "первая цифра меньше последней цифры числа". 3. находим произведение элементов массива в представлении double. var   i,n,k: integer;   p: double; begin   randomize;   write('введите количество чисел к (1..50): '); readln(k);   if (k< 1) or (k> 50) then write('неверное к')   else begin       p: =1;       writeln('отобранные случайные числа на интервале [1000; 5000]');       for i: =1 to k do       begin           n: =random(4501)+500; { диапазон [500; 5000] }           if n> =1000 then               if (n div 1000)< (n mod 10) then               begin write(n: 5); p: =p*n end;       end;       writeln;       if p> 1 then writeln('произведение отобранных чисел равно ',p)       else writeln('к сожалению, отобранных чисел нет')   end  end. тестовые решения: введите количество чисел к (1..50): 15 отобранные случайные числа на интервале [500; 5000]   3208 4925 1279 2528 1637 4979 3536 4416 2116 3655 произведение отобранных чисел равно 5.02832546192399e+34 введите количество чисел к (1..50): 3 отобранные случайные числа на интервале [500; 5000]   3385 1177 произведение отобранных чисел равно 3984145 введите количество чисел к (1..50): 1 отобранные случайные числа на интервале [500; 5000]   3838 произведение отобранных чисел равно 3838 введите количество чисел к (1..50): 1 отобранные случайные числа на интервале [500; 5000] к сожалению, отобранных чисел нет

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

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

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

Caktus Image

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

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

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

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

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

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

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

GTP TOP NEWS