Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program kalkulytor;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- var
- dp,prev:array[-10..1000000] of integer;
- n, min, i:integer;
- function min_f(a, b:integer):integer;
- begin
- if (a > b) then min := b
- else min := a;
- end;
- procedure get_pre(x: integer);
- begin
- if (x != 1) then
- get_pre(prev[x]);
- write(x, ' ');
- end;
- begin
- read(n);
- dp[0] := 0;
- dp[1] := 0;
- for i := 2 to n do begin
- min := dp[i - 1];
- prev[i] := i - 1;
- if (i mod 2 = 0) then
- if (min > dp[i div 2]) then begin
- min := dp[i div 2];
- prev[i] := i div 2;
- end;
- if (i mod 3 = 0) then
- if (min > dp[i div 3]) then begin
- min := dp[i div 3];
- prev[i] := i div 3;
- end;
- dp[i] := min + 1;
- end;
- writeln(dp[n]);
- get_pre(n);
- readln; readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement