Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные, уменьшается. Например, если Чертёжник находится в точке с координатами (7, -2), то команда Сместиться на (-2, 3) переместит Чертёжника в точку (5, 1).
Запись
Повтори k раз
Команда1 Команда2 Команда3
Конец
означает, что последовательность команд Команда1 Команда2 Команда3 повторится k раз.
Чертёжнику был дан для исполнения следующий алгоритм: Сместиться на (4, -2)
Повтори 5 раз
Сместиться на (2, 5)
Сместиться на (4, -1)
Конец
Сместиться на (-6, –7)
Какую единственную команду надо выполнить Чертёжнику, чтобы вернуться в исходную точку, из которой он начал движение?
#include <array>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>
int main()
{
std::array<int, 5> arr;
std::generate(arr.begin(), arr.end(), []()
{
return 1 + std::rand() % 100;
});
std::copy(arr.begin(), arr.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl << std::accumulate(arr.begin(), arr.end()-3, 0) << std::endl;
std::cout << std::accumulate(arr.begin(), arr.end()-2, 0) << std::endl;
std::cout << std::accumulate(arr.begin(), arr.end()-1, 0) << std::endl;
std::cout << std::accumulate(arr.begin(), arr.end(), 0) << std::endl;
}
function CycleFraction(a, b: integer): string;
begin
Result := (a div b).ToString;
a := a mod b;
if a = 0 then exit;
Result += ','; // разделитель
var k := Result.Length + 1;
var ost := new SortedList<integer, integer>;
ost.Add(a, k);
while True do
begin
a *= 10;
Result += (a div b).ToString;
a := a mod b;
if ost.ContainsKey(a) then
begin
var p := ost.Get(a);
Result := Result?[:p] + (a <> 0 ? '(' + Result?[p:] + ')' : ''.ToString);
exit
end
else
begin
k += 1;
ost.Add(a, k);
end
end
end;
begin
var (a, b) := ReadInteger2('Введите числитель и знаменатель:');
CycleFraction(a, b).Println;
end.