Тут все достаточно просто.
Вычитать 4 из 2 смысла нет: получим -2 и что с ним дальше делать?
Возведя -2 в квадрат, получим 4, но зачем 4 получать за две команды, когда можно сразу возвести исходную двойку в квадрат? А дальнейшее вычитание даст -6, квадрат -6 это 36, что никак не напоминает 64.
Поэтому первая команда - это "возведи в квадрат" и мы получим 4.
Из 4 вычитать 4 смыла никакого: получим ноль и дальше что? В квадрат возводить его смысла нет, вычитать еще 4 - будет -4 - и зачем оно нам, когда у нас 4 и так есть? Так что остается опять только "возведи в квадрат". Получаем 16 и это была вторая команда.
Вот 16 в квадрат возводить уж точно смысла нет: зачем нам 256, когда идем к 64? Так что теперь - только "вычти 4". Получим 12.
С 12 такое же рассуждение, 144 - это много. Опять "вычти 4" и получили 8.
Отлично, последняя команда "возведи в квадрат" и мы получили 64!
Ответ: 11221
program raf105;
var a,sum,col:integer;
begin
writeln('Вводите числа по очереди');
writeln('Чтобы узнать результат введите 0');
a:=1;
while a<>0 do
begin
readln(a);
if (10<=a) and (a<=99)
then if a mod 2 = 0
then
begin
sum:= sum+a;
col:= col+1
end;
end;
writeln('Количество чётных двузначных чисел: ',col);
writeln('Их сумма: ',sum);
end.
<em>Написано на языке PascalABC.NET</em>
#include
#include
#include
#include
int odd(int i)
{
return 2 * i + 1;
}
int square(int i)
{
return i * i;
}
typedef boost::counting_iterator counter;
typedef boost::transform_iterator transformer;
transformer odds(int n)
{
return transformer(counter(n), odd);
}
transformer squares(int n)
{
return transformer(counter(n), square);
}
int main()
{
using namespace std;
cout << "Enter vector length: ";
int n; cin >> n;
cout << inner_product( odds(0), odds(n), squares(0), 0 ) << endl;
2304(10)=100100000000(2)
то есть переводим число из десятичной в двоичную
столбиком
делим каждый раз на 2
получившиеся чило делим на 2 до тех пор пока оно небудет равнятся 1
потом все остатки делений начиная с последный и заканчивая на 1 выписываем в один ряд