bzoj 1005: [HNOI2008]明明的烦恼
2014-01-05 19:11
246 查看
prufer编码的应用:
View Code
var a:array[1..10000]of longint; su,p:array[1..1000]of longint; b:array[1..10000]of boolean; ans:array[1..10000]of longint; i,j,m,n,s,k,w,sum,c:longint; procedure add(t,d:longint); var i:longint; begin for i:=1 to s do while t mod su[i]=0 do begin inc(p[i],d); t:=t div su[i]; end; end; procedure cheng(t:longint); var i:longint; begin for i:=1 to c do ans[i]:=ans[i]*t; for i:=1 to c-1 do begin inc(ans[i+1],ans[i] div 10); ans[i]:=ans[i] mod 10; end; while ans[c]>=10 do begin ans[c+1]:=ans[c] div 10; ans[c]:=ans[c] mod 10; inc(c); end; end; begin readln(n); for i:=1 to n do read(a[i]); fillchar(b,sizeof(b),true); for i:=2 to n do if b[i] then begin inc(s); su[s]:=i; for j:=1 to n div i do b[i*j]:=false; end; fillchar(p,sizeof(p),0); sum:=n-2; k:=n; for i:=1 to n do if a[i]<>-1 then begin for j:=1 to a[i]-1 do begin add(sum,1); dec(sum); add(j,-1); end; dec(k); end; c:=1; fillchar(ans,sizeof(ans),0); ans[1]:=1; for i:=1 to s do for j:=1 to p[i] do cheng(su[i]); for i:=1 to sum do cheng(k); for i:=c downto 1 do write(ans[i]); end.
View Code
相关文章推荐
- BZOJ 1005: [HNOI2008]明明的烦恼(prufer数列)
- BZOJ 1005 [HNOI2008]明明的烦恼
- BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)
- 【HNOI2008】bzoj1005 明明的烦恼
- BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)
- 【bzoj 1005】 明明的烦恼 【HNOI2008】
- HYSBZ/BZOJ 1005 [HNOI2008] 明明的烦恼 - Prufer编码&组合数学&高精度 此乃神题!
- bzoj1005: [HNOI2008]明明的烦恼
- bzoj1005 [HNOI2008]明明的烦恼(prufer序列+组合数学+高精)
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数
- 【Purfer】【bzoj 1005】: [HNOI2008]明明的烦恼
- bzoj1005: [HNOI2008]明明的烦恼 [prufer序列]
- BZOJ 1005 [HNOI2008]明明的烦恼
- BZOJ1005 [HNOI2008]明明的烦恼
- 【BZOJ】【1005】【HNOI2008】明明的烦恼
- Prufer编码 & [bzoj 1005] [HNOI2008]明明的烦恼:Prufer编码,组合数学,高精度
- bzoj 1005: [HNOI2008]明明的烦恼
- [BZOJ 1005][HNOI2008]明明的烦恼(prufer编码+组合数学+高精度)
- 【BZOJ 1005】[HNOI2008]明明的烦恼 【Prufer序列】
- BZOJ 1005: [HNOI2008]明明的烦恼(prufer序列->无根树表达)