R 格式

高精度乘低精度
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
const int N = 2e3+10;
string s;
int a[N];
int mul(int a[],int b,int size){
int t=0;
for(int i=0;i<size;++i){
t+=a[i]*b;
a[i] = t%10;
t/=10;
}
if(t!=0){
a[size] = t;
return size+1;
}
return size;
}
int main(){
int n;
cin >> n >> s;
reverse(s.begin(),s.end());
int pos = s.find('.');
s.erase(pos,1); // 删除小数点
int size = s.size();
for(int i=0;i<size;i++)
a[i] = s[i] - '0';
for(int i=0;i<n;i++){
size = mul(a, 2, size);
}
// 四舍五入
if(a[pos-1]>=5) a[pos]++;
// 反转输出
for(int i=size-1;i>=pos;--i){
cout << a[i];
}
}

浙公网安备 33010602011771号