AcWing 5987. R 格式
原题链接
简单
作者:
一半醒_1
,
2024-11-07 13:32:08
,
所有人可见
,
阅读 48
C++ 代码
#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] * 2;
A[i] = t % 10;
t /= 10;
}
if(t) A.push_back(t);
}
void add(vector<int> &A, int b,int a)
{
int t = a;
for(int i = b; i < A.size(); i ++)
{
t += A[i];
A[i] = t % 10;
t /= 10;
}
if(t) A.push_back(t);
}
int main()
{
int n;
string b;
cin >> n >> b;
reverse(b.begin(), b.end());
int dot = b.find('.');
vector<int> B;
for(auto c : b)
if(c != '.')
B.push_back(c - '0');
while(n --) mul(B,2);
if(B[dot - 1] >= 5) add(B, dot, 1);
for(int i = B.size() - 1; i >= dot; i --)cout << B[i];
return 0;
}