Заполнить массив из 30 элементов случайными числами в интервале [-10; 10] и найти, сколько элементов в нем принимают максимальное значение На с++ сделать
Если использовать коды длины N, то должно существовать не менее 16 различных строчек из символов 0 и 1, таких, что в каждой такой строчке будет чётное число единиц (это очевидно, конечно: если таких строчек будет меньше 16, то кодов попросту не хватит).
3 не подходит: даже без ограничений на количество единиц число строчек 2^3 = 8, что меньше 16.
4 тоже не подходит: без ограничений на количество единиц число строчек 2^4 = 16, но как минимум одна не подходит (например, 0001 - не удовлетворяет требованиям). Хороших строчек остается не больше 15, что меньше 16. (На самом деле, хороших строчек длины 4 всего 8).
Пробуем 5. Если придумаем как закодировать 16 символов - победа. А закодировать можно вот как: первые 4 символа - двоичная запись номера символа (нумеруем начиная с нуля, например 5-й символ - 0101), а последний символ - 0, если число единиц среди первых четырёх символов чётно и 1 - если нечётно. Тогда в любом случае получится чётное количество единиц.
Var n,fibn:real; i:integer; begin readln(n); if n<=0 then writeln('Не существует чисел Фиббоначи меньше 0') else begin i:=0; while fibn<n do begin fibn:=(power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5); inc(i); end; writeln((power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5)-1); end; end.
//В лоб
Var sum,n,buf,fib0,fib1:integer;
function fibb(fib0,fib1:integer):integer; begin result:=fib0+fib1; end;
begin fib0:=0; fib1:=1; readln(n); if n<=0 then writeln('Не существует чисел Фиббоначи меньше 0') else begin if fibb(fib0,fib1)>=n then sum:=0 else begin while fibb(fib0,fib1)<n do begin buf:=fib1; fib1:=fibb(fib0,fib1); fib0:=buf; end; sum:=fibb(fib1,fibb(fib0,fib1))-1; end; writeln(sum); end; end.
Пример ввода: 12 Пример вывода: 20
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку