现在的位置: 首页 > 综合 > 正文

hdu 1063 Exponentiation

2018年12月30日 ⁄ 综合 ⁄ 共 807字 ⁄ 字号 评论关闭

大数

 

 

 

 

 

#include<stdio.h>
#include<string.h>
int a[2000],c[2000],d[2000];
int main()
{
    char s[12];
    int i,j,k,n,x,y,lena,lenc,lend,op;
    while(scanf("%s%d",s,&n)!=EOF)
    {
        memset(a,0,sizeof(a));
        memset(c,0,sizeof(c));
        memset(d,0,sizeof(d));
        op=5;
        for(i=0;i<6;i++)
        {
            if(s[i]=='.')break;
            op--;
        }
        if(op<0)op=0;
        k=0;
        for(j=5;j>=0;j--)
        {
            if(j==i)continue;
            a[k]=s[j]-'0';
            c[k]=a[k++];
        }
        lena=lenc=k;
        for(i=2;i<=n;i++)
        {
            for(j=0;j<lena;j++)
            {
                   k=0;
                for(x=0;x<lenc;x++)
                {
                    d[j+x]+=a[j]*c[x]+k;
                    k=d[j+x]/10;
                    d[j+x]=d[j+x]%10;
                }
                if(k>0)
                {d[j+x]=k;lend=j+x+1;}
                else lend=j+x;
            }
            for(j=0;j<lend;j++)
            {c[j]=d[j];d[j]=0;}
            lenc=lend;lend=0;
        }
        op=op*n;
            for(i=lenc-1;i>op-1;i--)
            {
                if(c[i]!=0)break;
                lenc--;
            }
            for(i=0;i<op;i++)
            {
                if(c[i]!=0)break;
            }
            k=i;
            for(i=lenc-1;i>op-1;i--)
                printf("%d",c[i]);
            if(k<op)
            printf(".");
            for(;i>=k;i--)
                printf("%d",c[i]);
            if(lenc==k)printf("0");
            printf("\n");
    }
    return 0;
}

 

抱歉!评论已关闭.