На вход алгоритма подаётся натуральное число n. алгоритм строит по нему новое число r следующим образом. 1) строится двоичная запись числа n. 2) к этой записи дописываются справа ещё два разряда по следующему правилу: а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). например, запись 11100 преобразуется в запись 111001; б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2. полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа n) является двоичной записью искомого числа r. укажите минимальное число n, после обработки которого с этого алгоритма получается число, большее, чем 190. в ответе это число запишите в десятичной системе.
27=16+8+2+1=2^4+2^3+2^1+2^0=1 1011 (2cc)
0,|27 * 2
0|54 *2
1|08 *2
0|16 *2
0|32 *2
0|64 *2
1|28 *2
0|56 *2
1|12 *2
0|24 *2
0|48 *2
0|96 *2
1|92 *2
1|84 *2
1|68 *2
1|36 *2
0|72 *2
1 |44 *2
0|88 *2
1|76 *2
1|52
+1
1|04 (последний байт при приближении =1100)
27, 27 = 1 1011, 0100 0101 0001 1110 1100 (в2сс) ≈11011,01001
27,27 = 1 B , 4 5 1 E B = 1B,451EC (в 16сс)
27, 27 = 11 011, 010 001 010 111 (в 2сс) =33,21217 ( в 8сс)
3 3, 2 1 2 7
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
var a:=ArrRandom(20,-99,99); a.Println;
a.Where(x->x<0).Concat(a.Where(x->x>=0)).Println
end.
Тестовое решение
88 94 55 -38 43 -72 3 -26 -1 -23 84 93 40 -8 -25 77 4 39 -50 3
-38 -72 -26 -1 -23 -8 -25 -50 88 94 55 43 3 84 93 40 77 4 39 3
Замечание:
Если стоит задача получить именно массив, а потом его вывести, можно написать так:
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
var a:=ArrRandom(20,-99,99); a.Println;
a:=a.Where(x->x<0).Concat(a.Where(x->x>=0)).ToArray;
a.Println
end.