На самом деле эта задача, вроде непонятная с виду, достаточно проста.
Сначала сделаем замену.
Два в степени n (где n больше или равно нулю) в двоичной системе счисления изображается единицей, за которой следуют n нулей. 15 в двоичной системе отображается числом 1111.
Попробуем вычислить величину
Из числа, которое изображается единицей с 2017 нулями, вычитаем 1111.
Попробуем рассуждать. Если бы у нас была единица, например, с пятью нулями, то мы бы получили 10000-1111=10001, т.е. две единицы и три нуля. Для единицы с шестью нулями получится три единицы и три нуля. Для единицы с семью нулями - четыре единицы и три нуля. Рассуждая аналогично, для единицы с 2017 нулями мы получим 2014 единиц и три нуля.
Осталось прибавить
. Это единица с 4040 нулями, поэтому в результате число единиц увеличится до 2015.
Ответ: 2015
1)
var
str : string;
begin
readln (str);
writeln (length (str) - pos (':', str));
end.
2)
var
str, s : string;
count, i : integer;
begin
readln (str);
s := copy (s, pos ('(', str) + 1, pos (')', str) - pos ('(', str) - 1);
count := 0;
for i := 1 to length (s) do
if s[i] = ' ' then inc (count);
writeln (count + 1);
end.
3)
var
str : string;
count : integer;
begin
readln (str);
count := 0;
while pos (',', str) > 0 do
begin
inc (count);
delete (str, pos (',', str), 1);
end;
writeln (str);
writeln (count);
end.
Сделано без проверки на соответствие условию.
Тире ----------------------
Var x: integer; begin
x:=random(-30,30);
writeln('x = ', x);
if (x>=-10) and (x<=10) then writeln('Значение x принадлежит отрезку [-10,10].') else writeln('x не принадлежит отрезку [-10,10].');
end.
я не уверен что именно вам нужно