2017蓝桥杯B组:取数位(递归,求余和除法)

蓝桥杯省赛C++A组B组题解整理(第十、九、八、七、六、五、四、三届) 【写在前面的话19.03.24】 从第八届蓝桥杯到第十届蓝桥杯,我也是参加了三届蓝桥杯的老学姐啦,更不更新第十届的题解取决于网上有没有流出题目,但是第十届之后的题解将不会再更新了。下面的这些真题大多是我在大一的时候刷的,在大二的时候整理的,在大三的时候有修正或加更。大一的时候还不太会写代码,大约是2月份开始学编程,刷真题,4月初比的赛,然后拿了省一进了国赛,最后也混了一个国三。总有小伙伴问我大概... 阅读详情

五、题目:取数位

求1个整数的第k位数字有很多种方法。
以下的方法就是一种。
题目所给代码如下:
// 求x用10进制表示时的数位长度
int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}

// 取x的第k位数字
int f(int x, int k){
if(len(x)-k==0) return x%10;
return _____________________; //填空
}

int main()
{
int x = 23574;
printf("%d\n", f(x,3));
}

对于题目中的测试数据,应该打印5。
请仔细分析源码,并补充划线部分所缺少的代码。
注意:只提交缺失的代码,不要填写任何已有内容或说明性的文字。


  • 分析思路:
    代码填空还是原方法,读题之后,把需要填空部分注释掉,在编译程序上运行一下,
    看到输出结果要求是第三位能够得到5,要考虑是顺数第三位还是倒数第三位
    在这里插入图片描述在第11行打断点
    数字的长度x恰好等于k
    在这里插入图片描述
    自己可以试试其他数字,例如574看其输出结果 x=574;k=3
    看出填空位置是一个递归
    当出现len长度和k不一致时,明显len要大于k,若len小于k,直接就是对最后一位取余

发现x/10是去掉低位,保留高位;例如:574/10=57
x%10=4是去掉高位,保留低位;例如574%10=4

  • 先用自己的例子测试一下
    代码:
#include<iostream>
using namespace std;

int len(int x){
	if(x<10) return 1;
	return len(x/10)+1;
}

// 取x的第k位数字
int f(int x, int k){
	if(len(x)-k==0) 
	return x%10;
	return f(x/10,k);  //填空
}

int main()
{
	int x = 574;
	printf("%d\n", f(x,2));
}

在这里插入图片描述
发现思路是正确的
然后测试题目所给代码和数据23574

#include<iostream>
using namespace std;

int len(int x){
	if(x<10) return 1;
	return len(x/10)+1;
}

// 取x的第k位数字
int f(int x, int k){
	if(len(x)-k==0) 
	return x%10;
	return f(x/10,k);  //填空
}

int main()
{
	int x = 23574;
	printf("%d\n", f(x,3));
}

在这里插入图片描述
答案:f(x/10,k)

“蓝桥杯”递推和递归(一)——取数位 递推和递归虽然叫法不同,但它们的基本思想是一致的,在很多程序中,这两种算法可以通用,不同的是递推法效率更高,递归法更方便阅读。(1)递推法递推法是一种重要的数学方法,同时也是计算机进行数值计算的个重要算法。递推法的核心是找到计算前后过程之间的数量关系,即递推式。递推式往往根据已知条件和所求问题之间存在的某种相互联系推导得出。递推计算时,需要将复杂运算转换为若干步重复的简单运算,这样可以发挥计算机擅于重复处理数据的特点。 阅读详情

相关推荐

电阻应变式力传感器

电阻应变式力传感器

lu_fresh_student的博客 5073

递归法分解一个数,并求出其位数。

给定一个数。要求:一、求它是几位数,二、正序打印出各位数字。这个问题是一个非常简单的问题,解决的办法也很多,下面是使用递归的方法进行计算的。使用的语言为c,但选项里没有,所以选了C++。有什么疑问可以在下面留言,如果发现错误也请及时留言。#include&lt;stdio.h&gt; int digits = 0;//定义全局变量 void REC_disassemble_number(int n...

孔晨瑞的博客 3538

AWS S3文件上传性能优化:Java SDK多线程与分段上传实战指南

本文详细介绍了如何通过Java SDK优化AWS S3文件上传性能,重点讲解多线程并发上传与分段上传(Multipart Upload)技术的实战应用。通过动态调整分段策略、线程池配置及内存优化技巧,可显著提升大文件上传效率,实测显示组合方案比单线程上传提速近5倍。文章还涵盖加密上传、断点续传等高级场景解决方案,并提供了完整的性能对比测试数据。

d6e7f8的博客 1015

第五周C++作业

7.计算s[n]=a+aa+aaa+aa...a(n个)的值。其中a是一个数字,n表示a的位数。例如,当a=1,n=5时,则要计算的表达式为     s[5]=1+11+111+1111+11111

u013928960的专栏 874

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

HHCS231的博客 1828

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 342

【蓝桥真题】取数位(求一个整数的第k位数字)

我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。 教程介绍、教程目录等能在README里查阅。 传送门:https://github.com/827652549/CanvasStudy 标题:取数位 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 public class Main { stat...

苏一恒 1736

【ros2】ros2_control 全面解析与实战指南

ros2_control 是 ROS2 生态中用于机器人实时控制的核心框架,旨在统一硬件接入接口、复用控制算法,避免重复开发,实现仿真与实机硬件的无缝迁移。其核心目标是简化不同硬件(传感器、执行器、完整系统)的集成流程,让开发者专注于控制逻辑而非硬件适配。创建类型功能包,依赖rclcpp。实现on_initupdate在中声明控制器插件,编译生成动态库。在 YAML 配置文件中指定自定义控制器类型,加载测试。

EnHengNa的博客 1467

(C++)剑指offer-拓展:数字序列中某一位的数字(数位问题)

(C++)剑指offer-拓展:数字序列中某一位的数字 分析数字规律可以发现,个位数有9个(不包括0),2位数有90个(10 - 99),3位数有900个(100 - 999),依次类推;因此处理步骤主要为三个过程: 1.定位第n个数字所在的数属于i位数的区域; 2.定位第n个数字所在对应i位数区域中的哪一个i位数; 3.定位第n个数字在那个i位数中的第几位。 通过上述规律筛出,问题整体的时间复杂...

qq_35264256的博客 238

《企业AI能力地图构建:AI应用架构师的关键秘籍》

构建企业AI能力地图是企业在AI时代实现战略转型和创新发展的关键举措,它需要从评估企业当前AI能力出发,全面了解技术储备、数据资产和人才队伍的现状。将企业业务战略转化为具体的AI应用场景,并进行优先级排序,是确保AI应用能够为企业带来实际价值的重要步骤。通过深入理解业务战略和挖掘应用场景,企业可以找准AI应用的切入点,提高投资回报率。

AI架构全栈开发实战笔记 631

记录:解决Ubuntu20.04安装ros报错E: Unable to locate package ros-kinetic-desktop-full【亲测有效】

报错:E: Unable to locate package ros-kinetic-desktop-full.尝试好久一直都无法下载,最后得知真相的我眼泪哗哗的直流。

**My Coding Family** 6万+

蓝桥杯 取数位

题目描述 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 // 求x用10进制表示时的数位长度 int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 int f(int x, int k){ if(len(x)-k==0) return x%10; return _____________________; //填空 } int main() { int x = 23574; p

Li5566123的博客 454

手把手教你学Simulink--Simulink智能驾驶场景挑战:高速公路入口匝道汇入仿真

高速公路入口匝道汇入在智能驾驶中的作用是当车辆从入口匝道进入主干道时,系统能够自主决策并执行汇入操作,确保安全和高效。目标识别与跟踪:如检测前方障碍物、识别车道线。路径规划:如计算最优汇入路径。动态控制:如调整速度、转向等以完成汇入动作。本示例将展示如何使用Simulink构建一个用于智能车辆高速公路入口匝道汇入的仿真模型,并进行验证。通过本指南,我们介绍了如何基于Simulink搭建一个用于智能车辆高速公路入口匝道汇入的仿真模型,并进行仿真和性能评估。背景介绍。

MHD0815的博客 261

蓝桥杯2017第八届C语言B组省赛习题题解——习题E.取数位

每日刷题(二十一) 蓝桥杯第八届C语言B组省赛习题 习题E:取数位 这个题需要认真分析,f(x,3)中的3需要细品,它是从左到右第三位还是从右到左第三位,我们从函数f中if(len(x)-k==0) return x%10;很显然是从左到右第三位,那么很显然5不是个位,所以我们需要考虑另一个出口,既然代码里出现了递归,那么这题很明显就是要我们递归求解。因为他要到个位才会输出,那么我们就可以让x除...

Atticus的博客 381

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2017蓝桥杯java B组取数位

标题:取数位 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 public class Main { static int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 static int f(int x, int k){ if(len(x)-k==0) return x%10; ...

weixin_40086938的博客 452

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【蓝桥杯Python组】2022年第十三届蓝桥杯省赛B组Python解题思路详解

第十三届蓝桥杯省赛B组Python解题思路详解

日拱一卒,功不唐捐 9964

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

第八届蓝桥杯C++B组:取数位

求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 // 求x用10进制表示时的数位长度 int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 int f(int x, int k){ if(len(x)-k==0) return x%10; return _____________...

韩江雪de 小屋 595

取位数 递归 java 蓝桥 2017 B组 真题

取位数 本题为2017年蓝桥杯java B组 的一个填空题,需要在横线位置填入代码,使程序得以正确运行。 package PastExam2017; /** @author DengMingxu 20212021年3月28日 State:unsolved Hint: 对于题目中的测试数据,应该打印 5 。 请知悉分析源码,并补充划线部分缺少的代码。 注意:只提交缺失的代码,不要填写任何已有内容或说明性的文字。 public cl

DAurora的博客 332

第八届蓝桥杯 JavaB 取数位

第八届蓝桥杯 JavaB 取数位 标题:取数位 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 public class 代码填空5取数位 { static int len(int x) { if (x < 10) return 1; return len(x / 10) + 1; } // 取x的第k位数字 static int f(int x, in...

frontierq的博客 192

【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-5-取数位

标题:取数位 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 public class Main { static int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 static int f(int x, int k){ if(len(x)-k==0) return ...

allyyhh的博客 393

蓝桥杯-取数位(2017-B-5)

标题:取数位 求1个整数的第k位数字有很多种方法。 以下的方法就是一种。 // 求x用10进制表示时的数位长度 int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 int f(int x, int k){ if(len(x)-k==0) return x%10; return __________...

lz970704的博客 251

蓝桥杯JavaB组

蓝桥杯OI赛制:部分得分,看你可以过几个测试,所以可以骗分;ACM:没有不会得分,只有全部通过才能得分。时间:11月报名,比赛4月12日 9:00-13:00题形:一般8-10道,2个结果填空、8个编程范围:排序:冒泡排序[2]、选择排序[3]、插入排序[3]、归并排序[4-5]、快速排序[4-5]、桶排序[4]、堆排序[4]、基数排序[4~5]搜索:bfs和dfs[1-5]、剪枝[4-6]、双向 BFS[5-6]、记忆化搜索[5]、迭代加深搜索[5-6]、启发式搜索[7]

m0_74617826的博客 2126

2017【第八届蓝桥杯初赛】 C/C++ B组

第八届蓝桥杯题型简介: 6个填空题,直接输出结果即可,无需其他输入输出 否则算错,只有满分和0分之分 4个编程题,需要输入测试数据,根据通过的样例数来评分 填空题: 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.取数位 6.最大公共子串 编程题: 7.日期问题 8.包子凑数 9.分巧克力 10.k倍区间 ...

From now on...的Blogs 655

蓝桥杯 Java B组省赛真题【2017】

excel、全排列、日期校验、是否互质、dp、二分法、前缀和

ephemeral_x的博客 532

[第十届蓝桥杯省赛C++B组]特别数的和

来源: 第十届蓝桥杯省赛C++B组 算法标签:模拟 题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 n 中,所有这样的数的和是多少? 输入格式 共一行,包含一个整数 n。 输出格式 共一行,包含一个整数,表示满足条件的数的和。 数据范围 ...

代码中枢:软件工程理论与实践的桥梁 698
上一篇: 数组和指针:超过一半的数字;水王发帖
下一篇: 2017蓝桥杯B组:最长公共子序列(动态规划详解(配图))
Serendipity_筱楠
博客等级 码龄8年 2万+粉丝 272原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值