蓝桥杯2024年第十五届省赛真题-R 格式

题目链接:

思路:

通过数组模拟d的每一位,逐位进行计算,从而实现对d的精确处理。

代码:

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2020;

int n;
string s;
vector<int> q;

void gd(vector<int>& q, int num){
    int t = 0;
    for(int i = 0; i < (int)q.size(); i++){
        //计算每一位乘 num
        t += q[i] * num;
        //余数
        q[i] = t % 10;
        //进位
        t /= 10;
    }
    //进位
    if(t) q.push_back(t);
}

void add(vector<int>& q, int k, int num){
    //t=num 表示后面一位要加上前面一位 / 10 的数(进位)
    int t = num;
    for(int i = k; i < (int)q.size(); i++){
        t += q[i];
        q[i] = t % 10;
        t /= 10;
    }
    if(t) q.push_back(t);
}

signed main(){
    cin >> n >> s;
    //反转s
    reverse(s.begin(), s.end());
    //得到s反转后小数点的位置
    int c = s.find('.');
    //将反转的s存入q中
    for(auto x: s){
        if(x !='.'){
            //将x转换为int类型
            q.push_back(x - '0');
        }
    }
    //高精度 * 低精度
    while(n--) gd(q, 2);
    
    //四舍五入
    //反转后判断小数点前面位置
    //q中没有存'.',所以小数点位置就是进位的位置
    if(q[c-1] >= 5) add(q,c,1);
    //输出整数答案 逆序
    for(int i = (int)q.size()-1; i >= c; i--){
        cout << q[i];
    }
    return 0;
}
相关推荐
techdashen2 分钟前
Async Rust 近况补课:从 `async-trait` 到原生 async trait
网络·算法·rust
一行代码一行诗++4 分钟前
循环的嵌套
数据结构·算法
玖釉-11 分钟前
C++ 中的矩阵介绍:以二维矩阵查找为例
c++·windows·算法·矩阵
ECT-OS-JiuHuaShan12 分钟前
存在是微分张量积,标量是参数但不可能是本质。还原论泛化,是语义劫持和以偏概全的逻辑谋杀伪科学庞氏骗局
数据库·人工智能·算法·机器学习·数学建模
CQU_JIAKE15 分钟前
5.22【A】
算法
2601_9578822428 分钟前
多账号流量内容运营的数据归因与ROI优化:从经验驱动到算法决策的技术转型
算法·产品运营·内容运营
bug大湿30 分钟前
麦阵波束算法——MVDR
算法·音频
ʚ希希ɞ ྀ30 分钟前
dp反思与总结
算法·leetcode·动态规划
简简单单做算法32 分钟前
基于模糊神经网络的一维时间序列预测算法matlab仿真
神经网络·算法·matlab·一维时间序列预测·模糊神经网络
郝学胜-神的一滴35 分钟前
干货版《算法导论》05:从集合接口到排序
开发语言·数据结构·c++·程序人生·算法·排序