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];
    }
}
posted @ 2025-03-23 19:53  丘狸尾  阅读(25)  评论(0)    收藏  举报