五、题目:取数位

求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)

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

  1. 2017蓝桥杯B组:最长公共子序列(动态规划详解(配图))

    最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和"baabcdadabc", 可以找到的最长的公共子串 ...

  2. 2017蓝桥杯B组:承压计算(扩大倍数)

    三.题目:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形. 7 5 8 7 8 8 9 2 7 2 8 ...

  3. 2017蓝桥杯B组国赛 瓷砖样式

    题目: 小明家的一面装饰墙原来是 3*10 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来. ...

  4. 蓝桥杯 ALGO-150 算法训练 6-1 递归求二项式系数值 java版

    问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. 简单的递归. impo ...

  5. [Java] 蓝桥杯ALGO-151 算法训练 6-2递归求二进制表示位数

    问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001,因此位数是4. 样例输入 一个满足题目要求的输入范例. 9 样例输出 与上面的样例输入对应的 ...

  6. [Java] 蓝桥杯ALGO-150 算法训练 6-1 递归求二项式系数值

    问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. package alg ...

  7. 蓝桥杯 ALGO-150 算法训练 6-1 递归求二项式系数值

    问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. #include &l ...

  8. 蓝桥杯 ALGO-151 算法训练 6-2递归求二进制表示位数

    问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001,因此位数是4. 样例输入 9 样例输出 4 数据规模和约定 输入数据中每一个数的范围. 例: ...

  9. 2017蓝桥杯java B组纸牌三角形

    2017蓝桥杯java B组纸牌三角形 1.标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算).要求每个边的和相等. 下图就是一种排法 A 9 6 4 8 ...

最新文章

  1. 自己写的一个BMP转PNG工具BMP2PNGen
  2. 《对马岛之魂》:“取巧”成功的佳作
  3. 多线程之间共享数据的实现
  4. [导入]九个笑话能告诉你九个人生的道理
  5. MSBuild编译扩展
  6. gz解压命令 linux_Linux日常篇-解压缩命令
  7. 分布式训练PyTorch 源码解读
  8. WebApp 开发中常用的代码片段
  9. PAT乙级(1004 成绩排名)
  10. Android基于UDP的局域网聊天通信
  11. 03-22 H5 性能分析
  12. nn.softmax的参数使用和数据使用
  13. sql数据库与c#的null的不同
  14. wget下载网络图片
  15. 最新计算机主板参数,电脑主板参数知识
  16. kaggle TalkingData用户性别数据预测性别入门笔记
  17. ISA防火墙策略配置
  18. VIVADO学习笔记之--DONT_TOUCH
  19. 东南大学 通信工程/电子信息工程 院校分析 通信保研面试重点问题
  20. 如何防范SQL注入式攻击?

热门文章

  1. python有什么用-python有什么用
  2. python怎么使用-Python中__all__作用何在以及如何使用?
  3. python和java选择哪个-JAVA和Python哪个好就业?
  4. python基础编程语法-Python基础语法介绍:面向对象编程(上)
  5. 用python画八卦图-用Python中的画图工具turtle绘制八卦图
  6. python入门经典电子书-python从入门到精通pdf
  7. 订单失效怎么做的_虾皮Shopee新加坡电商做什么产品好呢?订单少得可怜怎么办呢...
  8. 用sql取a与b的交集_【庖丁解牛SQL(二)】SQL核心语法速查
  9. 动态定义table每行两列
  10. linux atom编码设置,Ubuntu中Atom编辑器显示中文乱码的处理方法