C3EQUALZ

Задание 23 ЕГЭ

Nov 15th, 2021 (edited)
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.24 KB | None | 0 0
  1. function f(start, current: integer): integer;
  2. begin
  3.   if current = start then result:=1 else
  4.     if current < start then result:=0 else
  5.       begin
  6.       result:=f(start, current - 1);
  7.     result +=f(start, current - 3);
  8.     if (current = 5) or (current=10) then result:=0;
  9.    if current.divs(2) then result +=f(start, current div 2);
  10.    end;
  11.    end;
  12.    begin
  13.      print(f(2,14)*f(14,20))
  14.    end.
  15. ------------------------------------------------------------------------------------
  16. ### function f(a,b: int):int:=
  17.   a<b or (a in |8,11|) ?0  : a=b ? 1 : f(a-8,b) + f(a div 2,b) + f(a.Digits.Agr(0,(a,d)->a*10+(d<9?d+1:d))
  18.   print(f(102,43)*f(43,5));//вычитание, не содержит 8 и 11, увеличение по разрядам, если меньше 9.
  19. --------------------------------------------------------------------------------------
  20. //1. Умножь на 8
  21. //2. Подели на 3
  22. //Сколько чисел можно получить из 729 за 6 ходов
  23. ###
  24. function f(a,n:int; var hs: HashSet<integer>):int;
  25. begin
  26.   if n=6 then
  27.   begin
  28.     hs.Add(a);
  29.   end
  30.   else
  31.   begin
  32.     f(a*8,n+1,hs);
  33.     if a mod 3 = 0 then f(a div 3,n+1,hs);
  34.   end;
  35. end;
  36. var l:= new HashSet<integer>;
  37. f(729,0,l);
  38. l.pr;
Add Comment
Please, Sign In to add comment