AcWing 5987. R 格式
原题链接
简单
作者:
华_30
,
2025-04-01 20:03:59
·湖北
,
所有人可见
,
阅读 4
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void mul(vector<int> &a, int b)
{
int t = 0;
for(int i = 0; i < a.size(); i ++)
{
t += a[i] * b;
a[i] = t % 10;
t /= 10;
}
if(t) a.push_back(t);
}
void add(vector<int> &a, int k, int b)
{
int t = b;
for(int i = k; i < a.size(); i++)
{
t += a[i];
a[i] = t % 10;
t /= 10;
}
if(t) a.push_back(t);
}
int main()
{
int n;
string d;
cin >> n >> d;
reverse(d.begin(), d.end());
int dot = d.find('.');
vector<int> D;
for(int i = 0; i < d.size(); i ++)
if(d[i] != '.')
D.push_back(d[i] - '0');
while(n --) mul(D, 2);
if(D[dot - 1] >= 5) add(D, dot, 1);
for(int i = D.size() - 1; i >= dot; i --)
cout << D[i];
return 0;
}