===== PascalABC.NET =====
begin
var p := ReadInteger('p =');
var a := ArrRandom(p, -99, 99);
a.Println;
var q := a.FindIndex(r -> r < 0);
if q > -1 then
begin
var b := a?[:q].Where(r -> r.IsEven).ToArray;
Print('Первый массив:');
b.Println;
var c := a?[q:].Where(r -> r.IsOdd).ToArray;
Print('Второй массив:');
c.Println;
end
else
Println('В массиве нет отрицательных элементов')
end.
1280 или тупо переводим в 2сс или просто представляем в виде сумм чисел 2 в опред. степени( столько будет 0 + одна1)
=1024+128+64+32+8+4
всего 5 единиц
689=519+128+32+8+2 тоже 5 единиц
10110111=128+32+16+7=
245 в 2сс =1110101
В таких задачах идем с конца меняя знаки операций на противоположные, затем собираем алгоритм с конца меняя знаки операций:
50 / 2
25 - 1
24 / 2
12 / 2
6 / 2
3 - 1
2 / 2
1-1
0
Получим :21211121
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
#include <iostream>
#include <bitset>
#include <sstream>
const size_t hex(const std::string& number)
{
size_t u_num = 0U;
std::istringstream ost(number);
ost >> std::hex >> u_num;
return u_num;
}
template <typename L, typename R>
const size_t& calculate(const L& l, const R& r)
{
return std::bitset<16>(l).to_ulong() + std::bitset<16>(r).to_ulong();
}
int main()
{
std::cout << calculate(hex("7c"), 5) << std::endl;
std::cout << calculate("11", hex("1d")) << std::endl;
}