poj1001

来源:互联网 发布:java代码漏洞扫描工具 编辑:程序博客网 时间:2024/06/08 18:21

多精度乘单精度
#include <iostream>#include <stdio.h>#include <cstring>using namespace std;int main(){   char rr[6];    int a[2000],n,r,i,j,t,k,w;   // freopen("in.txt","r",stdin);   //scanf("%s",rr);cin>>n;    while (cin>>rr>>n)    {    t=1;r=0;j=1;    memset(a,0,sizeof(a));    for (i=5;i>=0;i--)        if (rr[i]!='.')        {           r+=t*(rr[i]-'0');           t*=10;           a[j]=rr[i]-'0';           j++;        }        else k=5-i;  //记录小数位数    //cout<<r<<"^"<<n<<endl;for (i=5;i>=1;i--) cout<<a[i];cout<<endl<<k;    t=5;    for (i=1;i<=n-1;i++)    {        for (j=1;j<=t;j++) a[j]*=r;        for (j=1;j<=t;j++) { a[j+1]+=a[j]/10;a[j]%=10;}        while (a[t+1]>0)        {            t++;            a[t+1]+=a[t]/10;            a[t]=a[t]%10;        }    }    //for (i=t;i>=1;i--) cout<<a[i];cout<<endl;    k*=n;    w=1;while (a[w]==0) w++;//cout<<t<<k<<w<<endl;    if (k>=t)    {        cout<<'.';        for (i=1;i<=k-t;i++) cout<<'0';        for (i=t;i>=w;i--) cout<<a[i];    }    if (k<t)    {        for (i=t;i>=k+1;i--) cout<<a[i];        if (k>w-1) cout<<'.';        for (i=k;i>=w;i--) cout<<a[i];    }    cout<<endl;    }    return 0;}

浮点大数求幂,结果的整数部分若为0,则不保留整数部分。小数部分若为0,则不保留小数部分和小数点。

0 0
原创粉丝点击