рекурсивная функция F. Begin Write (n div 3); If n div 3 > 2 then Begin F(n-3); F(n-5); End; End. Что выведет программа при вызове F(14)? В ответе запишите последовательность выведенных цифр слитно (без пробелов).
Функция перестанет вызывать саму себя, когда выражение n div 3 > 2 будет ложным, то есть при n ≤ 8. При рекурсии функции вызываются последовательно: как только видим первую функцию, пишем новую строку, расписывая результат вызова, и вновь делаем то же самое. Однако для экономии места и времени можно раскрывать функции в строке сразу, ведь от этого порядок вывода чисел не изменится.
Const maxn=15; var a: array[1..maxn] of integer; skv,prod,gr,i: integer; begin writeln('введите ',maxn,' чисел'); skv:=0; prod:=1; gr:=0; for i:=1 to maxn do begin write(i,': '); readln(a[i]); if a[i]<0 then skv:=skv+a[i]*a[i]; if (a[i] mod 2 = 0) and (i mod 2 = 0) then prod:=prod*a[i]; if abs(a[i])>100 then gr:=gr+1; end; writeln('сумма квадратов отрицательных: ',skv); writeln('произведение четных на четных местах: ',prod); writeln('больше 100 по модулю: ',gr); end.
введите 15 чисел 1: 151 2: -231 3: 104 4: 19 5: 36 6: -112 7: 5 8: 8 9: 11 10: 13 11: 45 12: 5 13: 6 14: 17 15: 19 сумма квадратов отрицательных: 65905 произведение четных на четных местах: -896 больше 100 по модулю: 4
На каждом шаге имеет смысл менять два горшка с разными цветами. Поэтому всё получится, если роз, стоящих на чётных местах, будет столько же, сколько и фиалок на нечётных. При этом если тех и других k, то всего нужно k перестановок. Код (PascalABC.NET 3.2): begin var n := ReadInteger(); var roses := new integer[n]; var count_roses := 0; var violets := new integer[n]; var count_violets := 0; for var i := 1 to n do begin if ReadInteger() = i mod 2 then if i mod 2 = 0 then begin roses[count_roses] := i; inc(count_roses); end else begin violets[count_violets] := i; inc(count_violets); end; end; if count_roses = count_violets then begin writeln(count_roses); for var i := 0 to count_roses - 1 do println(roses[i], violets[i]); end else write(-1) end.
4322321
Объяснение:
Функция перестанет вызывать саму себя, когда выражение n div 3 > 2 будет ложным, то есть при n ≤ 8. При рекурсии функции вызываются последовательно: как только видим первую функцию, пишем новую строку, расписывая результат вызова, и вновь делаем то же самое. Однако для экономии места и времени можно раскрывать функции в строке сразу, ведь от этого порядок вывода чисел не изменится.
F(14) = 4F(11)F(9) = 43F(8)F(6)3F(6)F(4)=4322321