BZOJ 1089: [SCOI2003]严格n元树(dp+高精度快速幂)
来源:互联网 发布:返享网络 编辑:程序博客网 时间:2024/06/09 20:04
美丽的n元树
中文题,就不解释题意啦O(∩_∩)O~
分析:
代码如下:
(可能有些繁琐,但是一定对,O(∩_∩)O~~)
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn=1000+10;int n,d,a[maxn],aa[maxn],ans[maxn],lena,lenaa,lenans,nn;void multiply(int k){ int s[maxn],p[maxn],q[maxn],lens,lenp=lenaa,lenq; memset(s,0,sizeof(s)),memset(p,0,sizeof(p)),memset(q,0,sizeof(q)); for(int i=1;i<=lenp;i++) p[i]=aa[i]; if(k==1){ lens=lenans; for(int i=1;i<=lens;i++) s[i]=ans[i]; } else{ lens=lenaa; for(int i=1;i<=lens;i++) s[i]=aa[i]; } for(int i=1;i<=lens;i++){ int x=0; for(int j=1;j<=lenp;j++) q[i+j-1]=s[i]*p[j]+x+q[i+j-1],x=q[i+j-1]/10,q[i+j-1]%=10; q[i+lenp]=x; } lenq=lens+lenp; while(q[lenq]==0&&lenq>1) lenq--; if(k==1){ lenans=lenq; for(int i=1;i<=lenq;i++) ans[i]=q[i]; } else{ lenaa=lenq; for(int i=1;i<=lenq;i++) aa[i]=q[i]; }}void Minus(){ int q[maxn],lenq; memset(q,0,sizeof(q)); int i=0; while(i<=lenans||i<=lena){ i++; if(ans[i]<a[i]) ans[i]+=10,ans[i+1]--; q[i]=ans[i]-a[i]; } lenq=i; while((q[lenq]==0)&&(lenq>1)) lenq--; for(int i=lenq;i>=1;i--) cout<<q[i]; cout<<endl;}int main(){ scanf("%d%d",&n,&d); lenans=1,ans[1]=1; for(int i=1;i<=d;i++){ lena=lenans; for(int j=1;j<=lenans;j++) a[j]=ans[j]; nn=n,ans[1]=1,lenans=1; lenaa=lena; memcpy(aa+1,a+1,sizeof(int)*(lena)); while(nn>0){ if(nn%2==1) multiply(1); nn/=2,multiply(2); } ans[1]++; int s=1; while(ans[s]>9){ if(ans[s+1]==0) lenans++,ans[s+1]=1,ans[s]%=10; else ans[s+1]++,ans[s]%=10; } } Minus(); return 0;}
by >o< neighthorn
1 0
- BZOJ 1089: [SCOI2003]严格n元树(dp+高精度快速幂)
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
- bzoj 1089: [SCOI2003]严格n元树 (dp+高精度)
- [BZOJ 1089][SCOI2003]严格n元树:DP+高精度
- [BZOJ]1089: [SCOI2003]严格n元树 DP+高精度
- BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度
- BZOJ 1089: [SCOI2003]严格n元树 递推,高精度
- BZOJ 1089: [SCOI2003]严格n元树 递推 高精度
- 1089: [SCOI2003]严格n元树 DP+高精度
- 简单高精度模板(bzoj 1089: [SCOI2003]严格n元树)
- 【BZOJ 1089】 [SCOI2003]严格n元树
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
- [BZOJ1089][SCOI2003]严格n元树(dp+数学相关+高精度)
- [BZOJ1089][SCOI2003][递推][高精度]严格n元树
- 【BZOJ1089】[SCOI2003]严格n元树【递推】【高精度】
- BZOJ1089(SCOI2003)[严格n元树]--递推+高精度
- 1089: [SCOI2003]严格n元树
- 1089: [SCOI2003]严格n元树
- 1006. 换个格式输出整数
- Linux 字符设备驱动开发基础(五)—— ioremap() 函数解析
- Ajax
- linux select函数详解
- isgraph字符串测试函数应用实例
- BZOJ 1089: [SCOI2003]严格n元树(dp+高精度快速幂)
- 面试题--JAVA中静态块、静态变量加载顺序详解
- linux高级原6
- set集合的两种重要实现类
- 通过spring JaxWsPortProxyFactoryBean调用webservice接口
- 微信
- 【Developer Log】通过Host-Only方式提供主机和虚机之间的相互访问
- HTML笔记(基础)
- JavaScript 语言基础知识点总结