码迷,mamicode.com
首页 > 其他好文 > 详细

Exponentiation——小数的幂

时间:2015-07-30 23:17:04      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28517

思路:(1)先预处理,讲输入的小数的末尾的0去掉,并记录小数点的位置,然后倒叙存放在数组里,

(2)进行连乘运算,两个循环。

重点注意运算之后数组的长度需要准确记录下来。

#include<stdio.h>
#include<string.h>
#define N 200
void add();
int reverse();
void summ();
int sum[N],b[N],n,time[N];
char a[N];
int l,len,k;
int main(){


while(scanf("%s%d",a,&n)!=EOF){

        l=0;
    memset(b,0,sizeof(b));
     memset(sum,0,sizeof(sum));
    // memset(time,0,sizeof(time));
      l=len=k=strlen(a);
   int flag=reverse();
for(int i=1;i<n;i++){
    add();
    summ();
}
int f=0;
for(int i=l-1;i>=0;i--){
    if(i==n*(len-flag)-1){
        printf(".");
    }
        if(sum[i]==0&&f==0&&i>=n*(len-flag)){
            continue;
        }
        f=1;
    /*if(f==0){
        if(sum[i]==0&&i>=n*(len-flag))
        continue;
        else{
        f==1;
        }
    }*/
    printf("%d",sum[i]);

}
printf("\n");
}
return 0;
}
int reverse(){
    int flag=0;
    int t=0;
    k=0;
    for(int i=len-1;i>=0;i--){
        if(a[i]==.){
            flag=i;t=1;
            continue;
        }
        if(a[i]==0&&t==0){
            continue;
        }
        t=1;
        b[k]= sum[k]=a[i]-0;
        k++;
    }
  /*  for(int i=0;i<len-1;i++){
    printf("%d ",sum[i]);
    }
    printf("\n%d\n",flag);*/
    len=k;
    return flag;
}
void add(){
    memset(time,0,sizeof(time));
    for(int i=0;i<l;i++){
        for(int j=0;j<len+1;j++){
            time[i+j]+=sum[i]*b[j];
        }
    }
    for(int i=0;i<l+len;i++){
        sum[i]=time[i];
    }
    /*for(int i=0;i<len+l-1;i++){
        printf("%d ",sum[i]);
    }
    printf("\n");*/
}
void summ(){
    l+=len-1;
    for(int i=0;i<l;i++){
        int s=sum[i];
        if(s>=10){
            sum[i]=s%10;
            sum[i+1]+=s/10;
            if(i==l-1) {
                l++;
                break;
            }
        }
    }
}

 

Exponentiation——小数的幂

标签:

原文地址:http://www.cnblogs.com/Yvettey-me/p/4690790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!