80分求助高精度题目
查看原帖
80分求助高精度题目
668599
BearBig楼主2022/9/3 23:08

闰土
高精度只有 80 分,不知道哪里错了但是 WA on test #2 and test #5 ,求助各位神牛啊!

#include<bits/stdc++.h>
using namespace std;
int num[2000];
int main()
{
    string s;int n;while(cin>>s>>n)
    {
        memset(num,0,sizeof(num));
        while(s[s.length()-1]=='0')
            s.erase(s.end()-1);
        int dpos=s.find(".");
        int ln=s.length();
        int ws=ln-dpos-1,tmp=0;
        s.erase(s.begin()+dpos);
        for(int i=0;i<s.length();++i)
            tmp=tmp*10+(s[i]-'0');
        num[1999]=1;ws*=n;while(n--)
        {
            for(int i=0;i<2000;++i)
                num[i]=num[i]*tmp;
            for(int i=1998;i>=0;--i)
            {
                num[i]+=num[i+1]/10;
                num[i+1]%=10;
            }
            num[0]%=10;
        }
        for(int i=0;i<2000-ws;++i)
            if(num[i])
            {
                for(int j=i;j<2000-ws;++j)
                    cout<<num[j];break;
            }
        cout<<'.';int start=2000-ws;
        for(int i=start;i<2000;++i)cout<<num[i];
        cout<<endl;
    }
}
2022/9/3 23:08
加载中...