【BZOJ1005】【HNOI2008】明明的烦恼
2016-09-27 18:10
302 查看
又是看黄学长的代码写的,估计我的整个BZOJ平推计划都要看黄学长的代码写
View Code
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int mo=100000; int n,a[1100]; int m=0,tot=0; int zhi[110000],ztop=0; bool kang[510000]; int num[110000]; int ans[1100000],la=0; void shai(){ memset(kang,0,sizeof(kang)); for(int i=2;i<=500000;i++)if(!kang[i]){ zhi[++ztop]=i; int temp=2; while(i*temp<=500000){ kang[i*temp]=true; temp++; } } } void buff(int x,int y){//hzwer_orz,用一个参数可以将加和减的代码合并 for(int i=1;i<=x;i++){//阶乘 int c=i; for(int j=1;c>=zhi[j];j++) while(!(c%zhi[j])){ num[j]+=y; c/=zhi[j]; } } } void mul(int x){ for(int i=1;i<=la;i++) ans[i]*=x; for(int i=1;i<=la;i++){ ans[i+1]+=ans[i]/mo; ans[i]%=mo; } while(ans[la+1]){ la++; ans[la+1]+=ans[la]/mo; ans[la]%=mo;} } int main(){ //freopen("ddd.in","r",stdin); //freopen("bzoj_1005.in","r",stdin); //freopen("bzoj_1005.out","w",stdout); memset(num,0,sizeof(num)); shai(); cin>>n; if(n==1){ scanf("%d",&a[1]);//注意因为a要--,所以这个特判不能放下面 if(!a[1] || a[1]==-1) cout<<1<<endl; else cout<<0<<endl; return 0; } for(int i=1;i<=n;i++){ scanf("%d",&a[i]); if(!a[i]){ cout<<0<<endl; return 0;} if(a[i]==-1) m++; else a[i]--,tot+=a[i]; } buff(n-2,1); buff(n-2-tot,-1); for(int i=1;i<=n;i++)if(a[i]) buff(a[i],-1); ans[la=1]=1; for(int i=1;i<=ztop;i++) while(num[i] --> 0)//趋向于 //mul(num[i]);静态差错多重要?这是第二个傻逼错误了 mul(zhi[i]); for(int i=1;i<=n-2-tot;i++) mul(m); //for(int i=1;i<=la;i++) cout<<ans[i]<<" "; cout<<endl; cout<<ans[la];//之前写成最后输出ans[1] qaq for(int i=la-1;i>=1;i--) printf("%05d",ans[i]);//之前写成2到la了,实力会随着时间的推移而降低qaq,然后还是之前写成%04 qaq cout<<endl; //因为高精度乘WA了5次QAQ return 0; }
View Code
相关文章推荐
- 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度
- bzoj 1005 [HNOI2008] 明明的烦恼 题解
- [bzoj1005][HNOI2008][明明的烦恼] (高精度+prufer定理)
- BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)
- 【bzoj1005】[HNOI2008]明明的烦恼 Prufer序列+高精度
- HYSBZ/BZOJ 1005 [HNOI2008] 明明的烦恼 - Prufer编码&组合数学&高精度 此乃神题!
- [bzoj1005][HNOI2008]明明的烦恼-Prufer编码+高精度
- 【HNOI2008】bzoj1005 明明的烦恼
- [BZOJ]1005 明明的烦恼(HNOI2008)
- bzoj 1005: [HNOI2008]明明的烦恼
- 【Prufer编码+组合】BZOJ1005(HNOI2008)[明明的烦恼]题解
- [bzoj1005]:[HNOI2008]明明的烦恼(prufer序列+质因数分解+高精乘)
- bzoj1005: [HNOI2008]明明的烦恼
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数
- bzoj 1005: [HNOI2008]明明的烦恼(组合数学 purfer sequence)
- [BZOJ1005][HNOI2008]明明的烦恼(prufer计数+组合数)
- BZOJ 1005 [HNOI2008]明明的烦恼
- 【BZOJ】【1005】【HNOI2008】明明的烦恼
- 【Purfer】【bzoj 1005】: [HNOI2008]明明的烦恼
- 【组合数学】【高精度】【prufer数列】【HNOI 2008】【bzoj 1005】明明的烦恼