社区讨论

80分求助高精度题目

P1517高精求小数幂参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo84i31o
此快照首次捕获于
2023/10/27 12:38
2 年前
此快照最后确认于
2023/10/27 12:38
2 年前
查看原帖
闰土
高精度只有 80 分,不知道哪里错了但是 WA on test #2 and test #5 ,求助各位神牛啊!
CPP
#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;
    }
}

回复

2 条回复,欢迎继续交流。

正在加载回复...