当前位置: 首页 > news >正文

c++R 格式

问题描述

小蓝最近在研究一种浮点数的表示方法:RR 格式。对于一个大于 0 的浮点数 dd,可以用 RR 格式的整数来表示。给定一个转换参数 nn,将浮点数转换为 RR 格式整数的做法是:

  1. 将浮点数乘以 2n2n;

  2. 四舍五入到最接近的整数。

输入格式

一行输入一个整数 nn 和一个浮点数 dd,分别表示转换参数,和待转换的浮点数。

输出格式

输出一行表示答案:dd 用 RR 格式表示出来的值。

样例输入

2 3.14

样例输出

13

样例说明

3.14×22=12.563.14×22=12.56,四舍五入后为 1313。

评测用例规模与约定

对于 50%50% 的评测用例:1≤n≤10,1≤1≤n≤10,1≤ 将 dd 视为字符串时的长度 ≤15≤15。

对于 100%100% 的评测用例:1≤n≤1000,1≤1≤n≤1000,1≤ 将 dd 视为字符串时的长度 ≤1024≤1024;保证 dd 是小数,即包含小数点。

#include<bits/stdc++.h>
using namespace std;   
int main()
{
  int n;
  string d;    //数太大用字符数组读
  cin>>n>>d;
  vector<int>b;  //开vetor好处就是可以用push_back进位的时候可以在后面直接加
  int sum=0,k=0;
  for(int i=d.size()-1;i>=0;i--)
  {
      if(d[i]!='.')
      b.push_back(d[i]-'0');   //把字符型变成整数型 
      else {k=sum;}    
      sum++;   //找到小数点位置为以后输出做铺垫,现在就可以看作一个大整数了
  }
  int u=b.size();
  while(n--)   //指数类型太大,保存不了,故每次*2 
  {    
    int t=0;
      for(int i=0;i<b.size();i++)
      {
          b[i]=b[i]*2+t;   //t是进位的数
          if(b[i]>=10)
          {
              t=b[i]/10;
              b[i]=b[i]%10;
          }
      else t=0;
      }
      if(t)
        b.push_back(t);
  }   //模拟数学过程 
  u=b.size();
  int t=1;
  if(k&&b[k-1]>=5){     // 四舍五入过程
    for(int i=k;i<u;i++)
       {
      b[i]=b[i]+1;
        if(b[i]<=9){t=0;break;}
        else b[i]-=10;
      } 
    if(t) b.push_back(t);
  }
    for(int i=b.size()-1;i>=k;i--)
      cout<<b[i];
  return 0;
}

相关文章:

  • 超融合服务器是什么
  • python中使用openssl构建root证书,CSR,并验证
  • Go 语言 fmt 模块的完整方法详解及示例
  • 标星 62.9 万,8 个 yyds 的 GitHub 开源项目 !
  • C++中的std::move函数详解:移动语义与资源管理
  • golang结构体与指针类型
  • ARM day2
  • protobuf为什么快
  • 基于ssm的微博网站(全套)
  • 流量分析2
  • VectorBT:使用PyTorch+LSTM训练和回测股票模型 进阶二
  • 核心知识——论文详解
  • 力扣DAY27 | 热100 | 合并两个有序链表
  • 万字C++STL——vector模拟实现
  • LeetCode 524 通过删除字母匹配到字典里最长单词
  • 虚幻引擎设置复杂碰撞体
  • docker使用uv安装依赖
  • 探索Halo:不止是博客,更是创作新宇宙
  • VUE3项目VITE打包优化
  • [BalticOI 2009] Radio Transmission 无线传输
  • 技术派|威胁F-35、击落“死神”,胡塞武装防空战力如何?
  • 外交部部长助理兼礼宾司司长洪磊接受美国新任驻华大使递交国书副本
  • 陕西三原高新区违法占用土地,被自然资源局罚款10万元
  • 女子七年后才知银行卡被盗刷18万元,警方抓获其前男友
  • 一涉嫌开设赌场的网上在逃人员在山东威海落网
  • 云南德宏州盈江县发生4.5级地震,震源深度10千米