蓝桥杯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;
}
相关推荐
老鼠只爱大米5 小时前
LeetCode经典算法面试题 #114:二叉树展开为链表(递归、迭代、Morris等多种实现方案详细解析)
算法·leetcode·二叉树·原地算法·morris遍历·二叉树展开
Ivanqhz5 小时前
现代异构高性能计算(HPC)集群节点架构
开发语言·人工智能·后端·算法·架构·云计算·边缘计算
HyperAI超神经5 小时前
覆盖天体物理/地球科学/流变学/声学等19种场景,Polymathic AI构建1.3B模型实现精确连续介质仿真
人工智能·深度学习·学习·算法·机器学习·ai编程·vllm
执着2596 小时前
力扣hot100 - 144、二叉树的前序遍历
数据结构·算法·leetcode
范纹杉想快点毕业6 小时前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
近津薪荼6 小时前
递归专题(4)——两两交换链表中的节点
数据结构·c++·学习·算法·链表
2501_940315266 小时前
【无标题】2390:从字符串中移除*
java·开发语言·算法
乐观勇敢坚强的老彭6 小时前
c++寒假营day01下午
c++·算法
散峰而望6 小时前
【算法竞赛】树
java·数据结构·c++·算法·leetcode·贪心算法·推荐算法
鱼很腾apoc6 小时前
【实战篇】 第14期 算法竞赛_数据结构超详解(下)
c语言·开发语言·数据结构·学习·算法·青少年编程