У исполнителя Математик две команды, которым присвоены номера:
1. Умножить на 2
2. Прибавить 3.
Исполнитель Математик работает только с натуральными числами. Составьте алгоритм получения из числа 4 числа 47, содержащий не более 5 команд. В ответе запишите только номера комманд
Программа:
{Free Pascal Compiler version 3.0.4+dfsg-23 [2019/11/25] for x86_64}
{Copyright (c) 1993-2017 by Florian Klaempfl and others}
{Target OS: Linux for x86-64}
program test;
const
start = -100;
finish = 50;
count = 100;
var
X : array of integer; {массив}
i : integer; {Счётчик цикла}
S : integer; {Сумма положительных}
begin
Randomize;
SetLength(X, count+1);
{Генерация массива из 100 элементов от -50 до 50}
for i := 1 to count do
X[i] := Round( Random * start) + finish;
{Вывод сгенерированного массива на экран}
for i := 1 to count do
write(X[i]:4);
writeln; writeln;
{Подсчёт положительных элементов}
S := 0;
for i := 1 to count do
if (x[i] > 0) then
S := S + x[i];
writeln('Сумма положительных S = ', S);
end.
#include <iostream>
#include <vector>
#include <cstdint>
using namespace std; template <class T>
istream& operator>>(istream &in, vector<T> &vec) { for (auto &it : vec) in >> it; return in;
}
template <class T>
ostream& operator<<(ostream &out, vector<T> &vec) { for (auto &it : vec) out << it << ' '; return out;
}
template <class T, class U>
istream& operator>>(istream &in, pair<T, U> &pair) { in >> pair.first >> pair.second; return in;
}
template <class T, class U>
ostream& operator<<(ostream &out, pair<T, U> &pair) { out << pair.first << ' ' << pair.second; return out;
}
signed main(void) { int32_t n; cin >> n; vector<vector<int64_t>> a(n, vector<int64_t>(n,-1)); int64_t x = 0, y = n/2; a[x][y] = 1; for(int32_t i = 2; i <= n*n; ++i) { int _x = x, _y = y; if(!x) { x = n-1; } else { --x; } if(y == n-1) { y = 0; } else { ++y; } if(a[x][y] != -1) { x= _x, y = _y; while(a[x][y] != -1) { if(x == n-1) { x = 0; } else { ++x; } } } a[x][y] = i; } for(int32_t i = 0; i < n; ++i) { cout << a[i] << '\n'; } return 0; }
Объяснение: