自学内容网 自学内容网

蓝桥杯R格式--高精度算法模拟

#include <bits/stdc++.h>
using namespace std;
int pos,p1;
int ib[1566];
int an[1567];
int n;
string a,b;
int main()
{
    cin>>n>>a;
    for(int i=a.size()-1; i>=0; i--)
    {
        if(a[i]!='.')
        {
            pos++;
            b.insert(b.end(),a[i]);///string 插char用insert/push_back
        }                           ///插string用+=/append
        else p1=pos;///记录小数点的位置
    }
    for(int i=0; i<pos; i++)
    {
        ib[i]=b[i]-'0';
    }
    while(n--)
    {
        for(int i=0; i<pos; i++)
            ib[i]*=2;///高精度乘法,因为2^1024不能表示,所以只能1024次乘2
        int c=0;
        for(int i=0; i<pos; i++)
        {
            int s=(ib[i]+c)%10;///s表本位,c表进位
            c=(ib[i]+c)/10;
            ib[i]=s;
        }
        if(c)
            ib[pos++]=1;///考虑99+1变100
    }
    if(ib[p1-1]>=5)
    {
        int c=1;
        for(int i=p1; i<pos; i++)
        {
            int s=(ib[i]+c)%10;
            c=(ib[i]+c)/10;
            ib[i]=s;

        }
       if(c)
            ib[pos++]=1;
    }
    for(int i=pos-1; i>=p1; i--)
        cout<<ib[i];
}


原文地址:https://blog.csdn.net/2301_80422662/article/details/145256182

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!