蓝桥杯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)!