М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
0Lvovich0
0Lvovich0
25.11.2021 12:48 •  Информатика

Напишите наиболее короткие вычисления выражений: x^45, x^21, x^17, x^11 в выражениях можно использовать лишь сложение, вычитание, умножение. не использовать power, через sqr

👇
Ответ:
SashaPolishuk
SashaPolishuk
25.11.2021
R:=Sqr(Sqr(Sqr(Sqr(Sqr(x))*x)*x))*x; // 45
r:=Sqr(Sqr(Sqr(Sqr(x))*x))*x; // 21
r:=Sqr(Sqr(Sqr(Sqr(x*x; // 17
r:=Sqr(Sqr(Sqr(x))*x)*x; // 11

Пример полной программы, реализующей такой алгоритм

// PascalABC.NET 3.3, сборка 1611 от 06.01.2018
// Внимание! Если программа не работает, обновите версию!

function Dec2Bin(x:integer):string;
begin
  var t:=x;
  var r:string:='';
  while t>=2 do (r,t):=(t mod 2+r,t shr 1);
  Result:=t+r
end;

function Pow(x:real;n:integer):real;
// Быстрое возведение в степень "слева направо"
begin
  var m:=Dec2Bin(n);
  Result:=x;
  for var i:=2 to m.Length do begin
    Result:=Sqr(Result);
    if m[i]='1' then Result*=x
    end
end;

begin
  var x:=ReadReal('Укажите основание х:');
  var n:=ReadInteger('Укажите степень n:');
  Writeln(x,'^',n,' = ',Pow(x,n))
end.

Примеры
Укажите основание х: 0.918
Укажите степень n: 39
0.918^39 = 0.0355520433528712

Укажите основание х: -2
Укажите степень n: 15
-2^15 = -32768

Укажите основание х: 12.6
Укажите степень n: 23
12.6^23 = 2.03480378921486E+25
4,4(8 оценок)
Открыть все ответы
Ответ:
афкашник
афкашник
25.11.2021
1)
uses crt;
var a:array [1..15] of integer;
     i,k:integer;
begin
  randomize;
  k:=0;
  for i:=1 to 15 do
    begin
      a[i]:=random(10)-3;
      if (a[i]<0) then inc(k);
      write (a[i],' ');
    end;
  writeln;
  writeln (k/15*100,'%');
end.

2)
uses crt;
var a:array [1..20] of integer;
     i:integer;
begin
  randomize;
  for i:=1 to 20 do
    begin
      a[i]:=random(30);
      write (a[i],' ');
    end;
  writeln;
  for i:=1 to 20 do
    if (a[i] mod 10 = 3) then write (a[i],' ');
end.

3)
uses crt;
var a:array [1..20] of integer;
     i:integer;
     k:longint;
begin
  randomize;
  k:=1;
  for i:=1 to 20 do
    begin
      a[i]:=random(30);
      write (a[i],' ');
      if (a[i]>9) and (a[i]<100) then k:=k*a[i];
    end;
  writeln;
  writeln (k);
end.

4)
uses crt;
var a:array [1..30] of integer;
     i:integer;
     flag:boolean;
begin
  randomize;
  for i:=1 to 30 do
    begin
      a[i]:=random(30);
      write (a[i],' ');
    end;
  writeln;
  flag:=true;
  for i:=1 to 29 do
    if (a[i]>a[i+1]) then
     begin
       flag:=false;
       break;
     end;
  writeln (flag);
end.
4,5(60 оценок)
Ответ:
alibekovberkut
alibekovberkut
25.11.2021
1)
#include <iostream>

int main()
{
    int A[15] = {1,2,3,-1,-2,-3,1,2,-1,-2,1,2,3,4,5};
    int k = 0;
    for (int i=0; i<15; i++)
        k+=(A[i]<0) ? 1:0;
    std::cout <<(k/15*100) <<'\n';
    return 0;
}

2)
#include <iostream>

int main()
{
    int A[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,33,20};
    for (int i=0; i<20; i++)
       if (A[i]%10==3)
         std::cout <<A[i] <<std::endl;
    return 0;
}

3)
#include <iostream>

int main()
{
    int A[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
    usnigned int p = 1;
    for (int i=0; i<13; i++)
        p*=(A[i]>9 && A[i]<100) ? A[i]:1;
    std::cout <<p <<'\n';
    return 0;
}

4)
#include <iostream>

int main()
{
    int A[30] = {1,2,3,4,5,6,7,8,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
                      23 24 25 26,27,28,29,28};
    bool flag = true;
    for (int i=0; i<29; i++)
      if (a[i]>a[i+1])
      {
         flag = false;
         break;
      }
    std::cout <<std::boolalpha <<flag <<std::endl;
    return 0;
}
4,5(69 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ