zoukankan      html  css  js  c++  java
  • UVA Exponentiation

    开始wa了几次后来重写一次就A了不知坑在哪

    #include<stdio.h>
    #include<string.h>
    #define N 1000
    int a[N],b[N],sum[N];
    int lena,lenb,len,flag,c;
    char s[N];
    void init()
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        int i,j,k;
        flag=0;
        b[0]=1;lenb=1;
        len=strlen(s);
        for(i=len-1,j=0;i>=0;i--)
        if(s[i]=='.') {flag=1;k=i;}
        else a[j++]=s[i]-'0';
        if(flag) {c=len-k-1;lena=len-1;len=c;}
        else {c=0;lena=len;len=0;}
    }
    void mult()
    {
        int i,j;
        memset(sum,0,sizeof(sum));
        for(i=0;i<lena;i++)
          for(j=0;j<lenb;j++)
          sum[i+j]+=a[i]*b[j];
          for(i=0;i<lena+lenb+5;i++)
          if(sum[i]>=10) {sum[i+1]+=sum[i]/10;sum[i]%=10;}
          for(i=lena+lenb+5;i>len;i--)
          if(sum[i]!=0) {lenb=i+1;break;}
          if(i==len) {lenb=i+1;}
          for(i=0;i<lenb;i++)
          b[i]=sum[i];
          len+=c;
    }
    int main()
    {
        int n,i,j;
        while(scanf("%s %d",s,&n)!=EOF)
        {
            init();
            for(i=0;i<n;i++)
            mult();
            len-=c;
            if(b[lenb-1]==0) lenb--;
           for(i=0;i<lenb;i++)
           if(b[i]!=0) {j=i;break;}
           if(flag){
               for(i=lenb-1;i>=j;i--)
            if(i==len-1) printf(".%d",b[i]);
            else printf("%d",b[i]);
            printf("
    ");
           }
           else {
                for(i=lenb-1;i>=0;i--)
                printf("%d",b[i]);
            printf("
    ");
           }
    
        }
        return 0;
    }
    
  • 相关阅读:
    float对内联元素和块元素的影响
    行内元素的困扰
    Nodejs同步和异步编程
    let、const、var的区别
    作用域
    SpringMVC
    MVC2新闻编译与发布
    JSP显示新闻
    servlet应用
    SWPU邮件登录界面的仿写(第二次作业)
  • 原文地址:https://www.cnblogs.com/llei1573/p/3396316.html
Copyright © 2011-2022 走看看