AcWing 5987. R 格式
原题链接
简单
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
vector<int> mul(vector<int> &A,int b)
{
vector<int> c;
int t=0;
int a=A.size();
for(int i=0;i<a;i++)
{
t+=A[i]*b;
c.push_back(t%10);
t/=10;
}
if(t) c.push_back(t);
return c;
}
vector<int> add(vector<int> &A,int idx,int b)
{
vector<int> c;
int t=b;
int a=A.size();
for(int i=idx;i<a;i++)
{
t+=A[i];
c.push_back(t%10);
t/=10;
}
if(t) c.push_back(t);
return c;
}
int main()
{
int n;
string d;
cin>>n>>d;
reverse(d.begin(),d.end());
int idx=d.find('.');
d.erase(idx,1);
vector<int> A;
for(int i=0;i<d.size();i++) A.push_back(d[i]-'0');
for(int i=1;i<=n;i++)
{
A=mul(A,2);
}
if(A[idx-1]>=5)
{
A=add(A,idx,1);
}
else
{
A=add(A,idx,0);
}
for(int i=A.size()-1;i>=0;i--)
{
printf("%d",A[i]);
}
return 0;
}