目录

什么是手算题?

手算技巧

01、巧用编辑器

例题1:门牌制作

例题二:卡片

02、心算手数

例题三:迷宫

例题四:七段码

03、巧用Excel

例题五:分数

例题六:星期一

04、巧用Python

例题六:顺子日期

用Python处理大数

例题七:乘积尾零

用Python处理字符

例题八:平方和

例题九:三角回文数


什么是手算题?

应用场合:填空题

手算的目的:减少做题时间,省下时间做编程题。

手段:

  • 不编码,或者只做部分编码
  • 用推理获得答案
  • 用软件工具帮助计算

手算技巧

01、巧用编辑器

例题1:门牌制作

门牌制作   2020年第十一届蓝桥杯省赛,填空题
【问题描述】从1到2020的所有数字中,共有多少个2?

思路一:借助编辑器
先编码连续打印出1 ~2020这2020个数字(或者用Excel输出1~3500),然后粘贴到任何一个编辑器中(Word或者Excel),选查询替换功能,查找或替换字符“2”,共624次,就是答案。

s = " "
for i in range (1,2021):s += str(i)
print(s)
'''
for i in range(1,2021):    # 每次都要打印,非常慢(不推荐)print(i ,end = '')
'''

或者

替换/查找 :

思路二:编码

s=' '
for i in range( 1,2021):s+=str(i)
print(s.count( '2')) # 624

例题二:卡片

卡片   2021第十二届蓝桥杯省赛,填空题,lanqiaoOJ题号I443
【问题描述】小蓝有很多数字卡片,每张卡片上都是数字0到9。小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从1拼到多少。例如,当小蓝有30张卡片,其中0到9各3张,则小蓝可以拼出1到10,但是拼11时卡片1已经只有一张了,不够拼出11。现在小蓝手里有0到9的卡片各2021张,共20210张,请问小蓝可以从1拼到多少?

【题意分析】
例如有30张卡片,其中0到9各3张,则小蓝可以拼出I到10,但是拼11时卡片1已经只有一张了,不够拼出11。
卡片:000 111 222 333 444 555 666 777 888 999
拼数:1 2 3 4 5 6 7 8 9 10 11
【思路】

  • 倒过来想,先假设能从1拼到X,然后看1~X需要的数字,哪个数字用得最多。检查这个数字用的次数。
  • 先估计可能拼出3000多个数。编码打印或者用Excel输出1~3500,然后全部贴到编辑器里,检查1用了多少次(搜索有多少个1)、2用了多少次、……最后发现1用的最多,然后每次都检查多少个1,逐渐往2021个1靠近,最后就能得到答案。所以答案是3181。
# 编码打印1~3500:
s=''
for i in range( 1,3501):s=s+str( i)+''
print(s)# 不要这样写,因为Python的打印太慢了
# for i in range(1,3501):
#     print(i,end=' ')

02、心算手数

例题三:迷宫

迷宫2017年第八届蓝桥杯省赛,填空题,lanqiaoOJ题号641

【问题描述】

X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!

开始的时候,直升机把 100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?

如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:

【分析】

有的填空题本身比较复杂,但是因为数据规模小,用不着编码,能直接通过眼睛看、动手数得到答案。 因为是个填空题,而且迷宫很简单,只有100个字符,可以直接数,约2分钟就能数完。

【 思路】

第一行U可以走出迷宫,倒数第一行D可以走出迷宫;第一列L可以走出迷宫,倒数第一列R可以走出迷宫。中间的左右相邻的R和L可以抵消,中间的上下相邻的U和D也可以抵消。

正解:DFS搜索

例题四:七段码

七段码2020年第十一届蓝桥杯省赛,填空题,lanqiao0J题号595

【问题描述】
七段数码管,一共有7个发光二极管,问能表示多少种不同的字符,要求发光的二极管是相连的。

因为图形简单,直接手算也行,约3~5分钟。
【思路】:用字符表示数码管不太方便,改用数字: a ~ g分别用1~7表示。统计这些组合中的连续亮灯,分7种情况统计:

  • 亮一个灯:1、2、3、4、5、6、7,共7种
  • 亮两个灯:12、13、24、25、34、36、45、46、57、67,共10种
  • 亮三个灯:123、124、125、134、136、234、245、246、257、345、346、367、456、457、467、567,共16种
  • 亮四个灯,这时不要直接数四个灯,情况与灭三个灯是等价的,数三个灯比数四个灯简单。注意灭三个灯后其他的四个亮灯是连续的:123、124、125、126、127、134、135、136、137、157、167、245、257、267、346、357、367、457、467、567,共20种
  • 亮五个灯:数灭两个灯的情况:12、灭13、灭14、...等,共19种
  • 亮六个灯:数灭一个灯的情况,有7种
  • 亮七个灯:有1种。
  • 对以上所有情况求和,答案是80。

 正解:DFS+并查集

03、巧用Excel

Excel的编辑、统计、计算功能很强大。
如果题目能手算,且需要比较多的编辑、统计、计算,可以利用Excel。

分数2018年第九届蓝桥杯,填空题,lanqiao0J题号610

例题五:分数

分数2018年第九届蓝桥杯,填空题,lanqiao0J题号610

【问题描述】
1/1+ 1/2+ 1/4 + 1/8 + 1/16 +…每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来(类似:3/2​,当然,这只是加了前 2 项而已)。分子分母要求互质

【思路】

  • 在Excel表格的A列填分子,都是1;B列填分母,每行递增2倍,做法是在B1填1,在B2填写“=B1*2”,然后按住B2往下拉到第20行,就填好了所有的分母。
  • 最后通分求分子分母。分母就是B20的524288,分子实际上就是“SUM(B1:B20)”,用鼠标选中这个区域,Excel自动算出1048575。

下面用Excel演示计算过程:

例题六:星期一

星期一2018年第九届蓝桥杯省赛,填空题,lanqiao0J题号611

【问题描述】

整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?

【思路】
        用Excel,在一个格子里输入日期1901年1月1日,另一个格子输入2000年12月31日,然后两个格子相减得36524天,除以7得5217.7周。0.7周可能包括一个星期一,继续讨论。

再看1901年1月1日是星期几。用Excel点1901年1月1日这一格的右键“设置单元格式-数字-日期-星期三”,点击“确定”,得“星期二”,即1901年1月1日是星期二,36524是5217周多5天(0.7周),最后5天没有星期一,说明答案就是5217。也直接利用Excel“单元格格式”对话框得出2000年12月31日刚好是星期天,从星期二至星期天之间没有星期一。

04、巧用Python

填空题遇到字符、大数字、日期问题,Python是首选。(做部分推理计算)

这里用python来求解上面例题:星期一

【问题描述】

整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?

【思路】

直接用datetime库求解,这是推荐用法。日期.weekday()可以输出某个日期是星期几。

from datetime import *
dt1 = datetime(1901,1,1)
dt2 = datetime(2000,12,31)
td = dt2- dt1
print(td.days/7)    # 5217.7   0.7周可存在一个星期一# 验证 0.7周(5天)是否存在一个星期一
print(dt1.weekday())#dt1的星期  注意:周一是O,周日是6
# 输出1表示周二,再过五天也没有星期一,所以0.7周(5天)不存在一个星期一。
print( td.days//7)  # 5217

例题六:顺子日期

顺子日期2022年第十三届蓝桥杯省赛,填空题lanqiao0J题号2096

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?

【思路】

时间问题用Python非常方便。把日期转为字符,然后判断顺子。

from datetime import *
dt1 = datetime(2022,1,1)
cnt = 0
for i in range(0,366):s="%02d%02d%02d"%(dt1.year,dt1.month,dt1.day)   #转换成字符串(输出两个字符,若不足两个在前面补零.若满足≥两个字符则输出原字符)dt1 += timedelta(days=1)            #timedelta有三种: days,seconds,microsecondsif "012" in s or "123" in s:        # 只可能是这两种情况cnt +=1
print(cnt)          #  14

用Python处理大数

  • 遇到大数,用Python处理最简单,可以直接硬算
  • 不像C/C++代码那样要考虑数据类型和溢出问题

例题七:乘积尾零

乘积尾零  2018年第九届蓝桥杯省赛,填空题,lanqiao0J题号612
【问题描述】

如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零?

5650 4542 3554 473 946 4114 3871 9073 90 4329
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899
1486 5722 3135 1170 4014 5510 5120 729 2880 9019
2049 698 4582 4346 4427 646 9742 7340 1230 7683
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649
6701 6645 1671 5978 2704 9926 295 3125 3878 6785
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074
689 5510 8243 6114 337 4096 8199 7313 3685 211 
data = "5650 4542 3554 473 946 4114 3871 9073 90 4329 \
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 \
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 \
1486 5722 3135 1170 4014 5510 5120 729 2880 9019 \
2049 698 4582 4346 4427 646 9742 7340 1230 7683 \
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 \
6701 6645 1671 5978 2704 9926 295 3125 3878 6785 \
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 \
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 \
689 5510 8243 6114 337 4096 8199 7313 3685 211"
num = data.split()  # 返回一个列表
s = 1
for i in num :s=s*int(i)              # 直接连乘,结果是一个极大的数
cnt =0
while s%10 == 0:            # 取余:逐个统计末尾的零的个数(末尾不是零则退出)s //=10                 # 除以10,把末尾的零去掉cnt +=1                 # 统计0的数量
print(cnt)                  # 31

用Python处理字符

例题八:平方和

平方和2019年第十届蓝桥杯省赛,填空题,lanqiao0J题号599
【问题描述】

小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。

注意,平方和是指将每个数分别平方后求和。

请问,在 1 到 2019 中,所有这样的数的平方和是多少?

sum = 0
for i in range( 1,2020):s = str(i)if '2' in s or '0' in s or '1' in s or '9'in s:sum+= i*i
print( sum)

例题九:三角回文数

2022年第十三届省赛,填空题
【问题描述】
        对于正整数n,如果存在正整数k使得n = 1 + 2 + 3 +…+ k = k(k+1)/2,则n称为三角数。例如,66066是一个三角数,因为66066 = 1 + 2+ 3 +…+ 363。如果一个整数从左到右读出所有数位上的数字,与从右到左读出所有数位上的数字是一样的,则称这个数为回文数。例如,66066是一个回文数,8778也是一个回文数。如果一个整数n既是三角数又是回文数,我们称它为三角回文数。例如66066是三角回文数。请问,第一个大于20220514的三角回文数是多少?

【 思路】

  • 本题遍历k,而不是遍历n。20220514对应的k大于6000,让k从6000开始。第3行把n转为字符串s;反串在Python中的表示非常简单,s的反串是第4行的s[::-1]。
  • 先找三角数,再判断回文数
for k in range( 6000,20000):n= k*(k+1)//2s = str(n)if s[::-1] == s:print(k) # 8382break

Python【填空题】手算技巧相关推荐

  1. python填空题_python填空题

    以下为<python填空题>的无排版文字预览,完整内容请下载 1.Python 提供了 6 个与字符串相关的函数.其中,_________函数可以返回字符串的长度. 在 Python 中, ...

  2. python填空题_Python题库-填空题

    『Python题库 - 填空题』Python笔试填空题 part 1. Python语言概述和Python开发环境配置 part 2. Python语言基本语法元素(变量,基本数据类型, 基础运算) ...

  3. 蓝桥杯 Python 填空题 2017 省赛 购物单

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推 ...

  4. python填空题及答案知乎_GitHub - HSINAN/zhihu-python: 获取知乎内容信息,包括问题,答案,用户,收藏夹信息...

    zhihu-python:获取知乎信息 Author: Update:09/09 2015 zhihu-python 采用 Python2.7 编写,用来方便地获取知乎上各种内容的信息,并且可以方便地 ...

  5. 喜闻乐见的「手算题」技巧3:巧用 Python

    Python 处理数字非常简单,遇到这样的填空题,可以用 Python. 即使是参加 C/C++.Java 组比赛,也要学一些 Python,以方便手算. Python 的代码长度一般比 C/C++. ...

  6. 【蓝桥杯】填空题技巧

    蓝桥杯填空题技巧 巧用编辑器 替换功能 统计 题目来源:2020年度C++A组,试题A:门牌制作 题目描述:1到2020的所有数字中,共有多少个2? 编码? ―判断每个数字中有几个2,然后把所有数字中 ...

  7. python标示注释符号_【填空题】Python使用符号( ) 标示单行注释 (5.0分)

    [填空题]Python使用符号( ) 标示单行注释 (5.0分) 更多相关问题 [单选题]效率比率是反映( )关系的财务比率. [单选题]在OSPF网络中,一个区域与另一个区域相连接的路由器是( ). ...

  8. python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...

    [Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...

  9. 请给出计算231-1的python表达式_【填空题】计算2 32 -1的Python表达式可以书写为____...

    [填空题]计算2 32 -1的Python表达式可以书写为____ 更多相关问题 [判断题]军队和国防建设指导思想实行战略转变的实质是:从立足于早打.大打.打核战争的临战准备状况,转到和平时期建设的轨 ...

最新文章

  1. diy直立双足机器人_速看!近期国内外机器人资讯大汇总
  2. python 自动补全函数括号_Python学习笔记(二)
  3. 企业如何测试邮件系统反垃圾反病毒的实际效果
  4. 一起学 Java(四) File、Try 、序列化、MySQL、Socket
  5. python 删除尾部0_python之List常见操作
  6. [译]JavaScript的新功能将改变正则表达式的编写方式
  7. 设计模式学习---(2)工厂模式
  8. 编码规范系列(一):Eclipse Code Templates设置
  9. Online Judge for ACM-ICPC etc.
  10. A - A Dangerous Maze
  11. 三种方法实现多级撤消/重做
  12. Class ZipArchive not found,安装zip扩展
  13. 第一章 Visual Basic入门
  14. python转exe遇到的坑及解决方案
  15. php获取当前域名的方法 如何获得域名
  16. 当win10电脑,本地网络出现了一个意外的情况,不能完成所有你在设置中所要求的更改?
  17. ELK日志分析系统搭建以及springboot日志发送到ELK中
  18. 沐风:企业网络营销赚钱关键设计
  19. 手机浏览网页或打开App时莫名弹出支付宝领红包界面的原因及应对措施
  20. ajax使用post函数(通过远程 HTTP POST 请求载入信息)

热门文章

  1. 数据结构第二版(朱昌杰版)第四章:串、多维数组、广义表
  2. 最近回了趟家,随便拍的照片
  3. 10个小故事(转自罗云彬的编程乐园)
  4. Vivado综合报错及解决方法
  5. OPTICS聚类算法详解
  6. ActionScript 学习手记之ExternalInterface的使用
  7. 一.无线电能传输技术简介
  8. 基于摄像头定时触发拍照的传统机械水电燃气表数据采集抄表方案
  9. ssh升级后无法登陆_【攻略】关于地税系统升级后无法登录、申报错误的10个解决方法!...
  10. python读取excel文件代码封装_12行代码教会你用python读excel文件提取数据生成条形码...