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
原创粉丝点击