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

蓝桥杯2024年第15届B组试题D

这个题我在C语言网蓝桥得了95分,不知道哪里错了。如果有大佬看出来了,

请给我评论指出我的错误,谢谢。

C语言网蓝桥:蓝桥杯真题 - 编程题库 - C语言网

 

 

试题D: R格式

时间限制: 1.0s 内存限制: 256.0MB 本题总分:10分

 

【问题描述】

 

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

 

        1. 将浮点数乘以(2的n次方);

 

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

 

【输入格式】

 

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

 

【输出格式】

 

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

 

【样例输入】

 

  2   3.14

 

【样例输出】

 

  13

 

【样例说明】

 

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

 

【评测用例规模与约定】

 

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

 

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

 

解析:

这个题我们要会高精度乘法,用高精度乘法做2的n次方,这个之前的高精度乘法思路一样(不会请看我以前发的高精度乘法:高精度运算(乘法)和一个题(洛谷p1303)-CSDN博客 )

这个高精度是乘法的变形;

这个就不需要字符数组了,我们直接定义一个整型数组(因为每次都乘于2),找个变量num存为数,中间的和高精度乘法一样(不会的看我主页的高精度乘法),到了最后我们判断a[num]的数是否大于0,大于0就加1;

 

代码:

#include<stdio.h>
#include<string.h>
#define max 2010
int main(){int a[max]={0},b[max],c[max];int n,i,j,num=1,d=0;a[0]=1;scanf("%d",&n);//2的n次幂 for(i=0;i<n;i++){for(j=0;j<num;j++){a[j]=a[j]*2;	}for(j=0;j<num;j++){//进位 a[j+1]+=a[j]/10;a[j]=a[j]%10;}if(a[num]>0){//判断是否因为进位而位数+1 num++;}}for(i=num-1;i>=0;i--){printf("%d",a[i]);}return 0;
}

小数怎么处理呢,我们可以定义个字符数组,求出小数位数 e和整数位数,

把字符数组转换相应的整型数组(有几个小数就乘几个10),然后用上面求出2的n次方的数组和这个数组相乘,判断前面有没有多的0,再进位,再判断第e个数是否大于等于5

成立前的数+1,

代码:

#include<stdio.h>
#include<string.h>
#define max 5100
#define fu 1030
int main() {char A[fu];int a[max]={0},b[max],c[max]= {0};int n,i,j,num=1,z,e=0,m;a[0]=1;scanf("%d%s",&n,&A);m=strlen(A);for(i=0; i<n; i++) {for(j=0; j<num; j++) {a[j]=a[j]*2;}for(j=0; j<num; j++) {a[j+1]+=a[j]/10;a[j]=a[j]%10;}if(a[num]>0) {num++;}}j=0;for(i=m; i>=0; i--) {if('0'<=A[i]&&A[i]<='9') {b[j]=A[i]-'0';j++;}if(A[i]=='.') {e=i;}}e=strlen(A)-e-1;m=j;for(i=0; i<num; i++) {for(j=0; j<m; j++) {c[i+j]+=a[i]*b[j];}}num=num+m;for(i=0; i<num; i++) {for(i=0; i<num; i++) {c[i+1]+=c[i]/10;c[i]%=10;}}for(; !c[num-1]&&num!=1;) {num--;}if(c[e-1]>=5) {c[e]=c[e]+1;}for(i=num-1; i>=e; i--) {printf("%d",c[i]);}return 0;
}

若有错误,请评论指出错误,谢谢;

 

http://www.dtcms.com/a/392767.html

相关文章:

  • 【软考中级 - 软件设计师 - 基础知识】数据结构之线性表
  • Tomcat工作机制与Servlet流程详解
  • Netty从0到1系列之Recycler对象池技术【1】
  • 开始 ComfyUI 的 AI 绘图之旅-SD3.5文生图和图生图(全网首发,官网都没有更新)(十五)
  • [数理逻辑] 决定性公理与勒贝格可测性 (III) 有限维情况
  • 浅谈 “混合检索”和“重排”
  • 计算机视觉与深度学习 | 基于Matlab的雾霾天气和夜间车牌识别系统关键技术与架构设计
  • 二、PyTorch张量学习教程:从小白到高手的实战之旅
  • 名字空间,异常与匿名函数
  • DCM项目wan 1.3b T2V模型comfyui改造流程尝试
  • python编写的第一个appium自动化测试脚本
  • 道客巴巴文库资料免费下载的方法(不需要第三方软件)
  • 【C++】STL详解(九)—priority_queue的使用与模拟实现
  • 【车载开发系列】了解FlashDriver
  • 轻量化 AI 算法:开启边缘智能新时代
  • sward入门到实战(3) - 如何管理文档
  • 贝叶斯优化(Bayesian Optimization)实战:超参数自动搜索的黑科技
  • CSP-S2025 第一轮试题(附答案)
  • python ipynb中运行 报错rpy2 UsageError: Cell magic `%%R` not found.,原因是命令行要用raw的格式
  • 蓝耘智算与DeepSeekR1:低成本高能AI模型
  • Shimmy,超越ollama?
  • LeetCode:36.二叉树的中序遍历
  • python开发环境VSCode中隐藏“__pycache__”目录实践
  • Chrome View渲染机制学习小记
  • C# Protobuf oneof、包装器类型、枚举命名与服务支持
  • 智慧消防:科技赋能,重塑消防安全新生态
  • AI人工智能训练师五级(初级)实操模拟题
  • [数理逻辑] 决定性公理与勒贝格可测性(I) 基础知识
  • Java面向对象之多态
  • 量子计算学习续(第十五周周报)