bzoj1263: [SCOI2006]整数划分

    xiaoxiao2021-04-14  62

    传送门 我们可以求出满足 xx1>(x1)x xx+1>(x+1)x 的整数x 然后手玩一下发现x=3 所以要尽可能的多拆出3。 不难得到以下方案: 1.n%3==0 拆成n/3个3 2.n%3==1 拆成n/3-1个3,2个2 3.n%3==2 拆成n/3个3,1个2 高精度一发水过。

    uses math; var a:array [0..5005] of longint; n,k,kk,i,j:longint; u:extended; begin read(n); if (n<=4) then begin writeln(1); write(n); exit; end; k:=n div 3; if n mod 3=1 then dec(k); kk:=(n-k*3) div 2; u:=k*ln(3)/ln(10)+kk*ln(2)/ln(10); writeln(trunc(u)+1); a[0]:=1; a[1]:=1; for j:=1 to k do begin for i:=1 to a[0] do a[i]:=a[i]*3; for i:=1 to a[0] do begin inc(a[i+1],a[i] div 10); a[i]:=a[i] mod 10; end; if (a[a[0]+1]<>0) then inc(a[0]); end; for j:=1 to kk do begin for i:=1 to a[0] do a[i]:=a[i]*2; for i:=1 to a[0] do begin inc(a[i+1],a[i] div 10); a[i]:=a[i] mod 10; end; if (a[a[0]+1]<>0) then inc(a[0]); end; for i:=a[0] downto max(a[0]-99,1) do write(a[i]); end.
    转载请注明原文地址: https://ju.6miu.com/read-670056.html

    最新回复(0)