加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

POJ 1001 大数

发布时间:2020-12-14 03:34:48 所属栏目:大数据 来源:网络整理
导读:无聊水一道。。大数模拟 各种坑爹测试数据 #include "stdio.h"#include "string.h"int a[10010],b[10010],c[10010];int main(){ int w,i,j,m,dian,k,le; char str[1001]; while (scanf("%s%d",str,w)!=EOF) { getchar(); if (w==0) { printf("1n"); continu

无聊水一道。。大数模拟

各种坑爹测试数据

#include "stdio.h"
#include "string.h"
int a[10010],b[10010],c[10010];
int main()
{
    int w,i,j,m,dian,k,le;
    char str[1001];

    while (scanf("%s%d",&str,&w)!=EOF)
    {
        getchar();
        if (w==0)
        {
            printf("1n");
            continue;
        }
        memset(a,sizeof(a));
        memset(b,sizeof(b));
        memset(c,sizeof(c));

        le=strlen(str);
        m=1;
        dian=-1;
        for (i=le-1;i>=0;i--)
        {
            if (str[i]=='.') dian=m-1;
            else
            {
                a[m]=str[i]-'0';
                m++;
            }
        }
        a[0]=m-1;
        while (a[a[0]]==0) {a[0]--; if (a[0]==0) break;}
        if (a[0]==0)
        {
            printf("0n");
            continue;
        }

        for (i=0;i<=a[0];i++)
        b[i]=a[i];


        for (i=2;i<=w;i++)
        {
            memset(c,sizeof(c));
            for (j=1;j<=a[0];j++)
                for (k=1;k<=b[0];k++)
                c[j+k-1]+=a[j]*b[k];
            c[0]=a[0]+b[0]-1;
            for (j=1;j<=c[0];j++)
            {
                c[j+1]+=c[j]/10;
                c[j]%=10;
            }
            if (c[c[0]+1]!=0) c[0]++;
            while (c[c[0]]==0)
            {
                c[0]--;
            }
            for (j=0;j<=c[0];j++)
                a[j]=c[j];
        }

        if (dian==-1)
        {
            for (i=a[0];i>=1;i--)
            printf("%d",a[i]);
            printf("n");
        }
        else
        {
            dian*=w;
            if (a[0]<=dian)
            {
                printf(".");
                for (i=1;i<=dian-a[0];i++)
                printf("0");
                k=1;
                while(a[k]==0) k++;
                for (i=a[0];i>=k;i--)
                    printf("%d",a[i]);
                printf("n");

            }
            else
            {
                for (i=a[0];i>dian;i--)
                    printf("%d",a[i]);

                k=1;
                while(a[k]==0) k++;
                if (dian>=k) printf(".");
                for (i=dian;i>=k;i--)
                    printf("%d",a[i]);
                printf("n");
            }


        }

    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读