以下为2017年全国 NOIP 提高组复赛的第1题:

怎么样,读完题是不是感觉特别懵。—— 我是谁,我在哪里?

接下来我们来慢慢解析这道让人摸不着头脑的竞赛题。

一、首先翻译一下题的意思:

l假设,现在人民币只有两个币种,面值你定

l对面值数字的要求是这两个数字不能有公约数(除1这个公约数外)

例如:2和5

l问用这两个面值的钱,不能凑齐的最大的价钱是多少

l当然,前提是你有任意多的钱

是不是稍微要清晰一些了呢。

二、那我们接下来用python写一个程序来完成这道题:

整个过程分两步:

第一步:借助 python 找规律划范围

1# 先找出能凑出来的金额

2defmyFunc(a, b):# 输入a,b两个互素的面值

3c = 1# 从1开始找出能凑出的金额

4whileTrue:# 不断循环,电脑配置低的,请远离,前方危险

5foriinrange(c):

6an01 = a * i

7forjinrange(c):

8an02 = b * j

9ifan01 + an02 == c:# 一旦找到能凑出当前金额c的i和j,打印出来

10# print(c, "=", a, '*', i, '+', b, '*', j)

11print(c,end='')

12c += 1# 金额不断上涨,上不封顶

13

14

15if__name__=="__main__":

16myFunc(3, 5)

结果为:

如果将面值设置为 7,5 呢

结果:

再如果换成 7,9

结果:

综上:

l我们可以发现,不可组合的面值均集中在靠前的位置,但有多靠前,具体又在哪个位置呢?

l我们姑且假定这个数字就在两数的乘积之内,而且事实也是这样的。大家可以多试几对数字,检验一下。

第二步:范围找到后,我们再来考虑用 python 找出范围内的不可组合的金额值:

备注:上面的程序是一个死循环,需要手动结束程序,建议不懂操作的小伙伴谨慎运行(嘿嘿,你是不是已经入坑啦!)。但下面这个程序就不一样了,小伙伴们尽管去运行吧。

1# 找出两数乘积范围内的可组合数据

2defmyFunc(a, b):

3c = a * b

4my_list = []# 创建存放所有组合出来的金额值

5

6# 找寻过程--不断对比

7foriinrange(0, c):

8an01 = a * i

9forjinrange(c):

10an02 = b * j

11ifan01 + an02 <= c:# 只找在乘积范围内的组合,节省运算次数

12my_list.append(an01 + an02)# 将符合的金额添加进目标列表

13returnlist(set(sorted(my_list)))# 返回经过去重和排序的目标列表

14

15

16# 找到最大的那个不能组合的金额

17defgetMax(a, b):

18my_list = myFunc(a, b)# 调用找可拼凑数据函数得到目标列表

19my_list.sort(reverse=True)# 将目标列表反序排列

20

21# 判断目标列表是否连续,并输出断点数中的最大值

22y = my_list[0] + 1# 创建对比参数

23forxinmy_list:

24ifx + 1 != y:

25print(x, y)

26break

27y = x

28returny - 1# 返回最大断点值

29

30

31if__name__=="__main__":

32print(getMax(16, 27))

结果为:

不知道大家有没有发现一个问题,这个最大不可组合数据似乎有一定的规律,规律为:

c = a * b - a - b

( 其中的a 和 b 为你输入的两个互为素数的币种面值,c为它们不能组合的金额 )

大家可以多试几组数据,验证一下。

而且我要悄悄告诉你的就是,这个公式可是一个牛哄哄的定理,名字叫:赛瓦维斯特定理赛瓦维斯特定理:

已知a,b为大于1的正整数,(a,b)=1,则使不定方程 ax+by=c 无负整数解的最大整数c=ab−a−b

其中的 (a,b) 表示a和b的最大公约数

怎么样,通过两个程序,我们就很容易的解决了这个看起来不那么友好的竞赛题。

此时,是不是觉得 python 很酷呢!

此文章由码小易少儿编程讲师提供,转载请注明出处!

python竞赛试题及答案_【技术分享】用python解NOIP竞赛题相关推荐

  1. python竞赛试题及答案_用Python来解一道华罗庚数学竞赛试题

    最近浏览到一道华罗庚数学竞赛试题,觉得很有意思,题目是这样的: x,y都是正整数,且满足x+y+xy=54,求x+y的值. 这道题可以用数学的常规解法,即分解因式来做,其实我们也可以用python来编 ...

  2. python竞赛试题及答案_竞赛信息 | 蓝桥杯大赛Python组

    蓝桥杯大赛 青少年创意编程Python组 竞赛规则及样题 - 竞赛规则 - 1 竞赛时长 Python编程组竞赛的选拔赛.省赛及国赛,竞赛时长均为120分钟,详细赛程安排另行通知. 2 竞赛形式 竞赛 ...

  3. 合肥青少年信息学计算机竞赛试题,合肥市竞赛_27届合肥市信息学竞赛试题和答案_淘题吧...

    Ⅰ 合肥市第二十七届青少年信息学(计算机)竞赛小学组答案 动态规划? Ⅱ 合肥市化学竞赛 这个我不知道啊,不过我的经验是实验题多做一些好,一些物质的性质掌握些好,不知道会不会有分析题出现,我参加的福建 ...

  4. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  5. python竞赛试题及答案_Python全国少儿编程竞赛参赛作品《自主数学练习小工具》解析...

    本文介绍的作品是全国青少年创意编程与智能设计大赛创意编程比赛张佳栩同学的参赛作品. 这篇文章我们继续讲解Python语言的内容,这次要学习的是张佳栩同学开发的自主数学练习小工具,上面的作品说明很简单明 ...

  6. 阿里python面试题和答案_阿里的python大牛总结10条Python面试题陷阱,中招了吗?...

    每年的3-4月份是跳槽的高峰期,无论是应聘Python web开发,爬虫工程师,或是数据分析,还是自动化运维,都涉及到一些基础的知识!我挑了一些Python的基础面试题,看看你能不能的答上来,也许面试 ...

  7. python竞赛试题及答案_python练习题答案

    可复制.编制,期待你的好评与关注! Python 练习题库 By 郑红波 2017-12-19 一. 填空题 1. Python 标准库 math 中用来计算平方根的函数是 __________ . ...

  8. python基础考试试题及答案_大学mooc2020年Python编程基础题目期末考试答案

    婴幼儿喜欢成人接触.抚爱,这种情绪反应的动因是为满足儿童的().A.生理性需要B.情绪表 基金公司内对基金投资实务拥有最高决策权力的是().A.基金经理B.投资总监C.投 在招聘人事专员的过程中,关于 ...

  9. 基于python的搜索引擎论文_技术分享 - 基于python构建搜索引擎系列——(四)检索模型...

    构建好倒排索引之后,就可以开始检索了. 检索模型有很多,比如向量空间模型.概率模型.语言模型等.其中最有名的.检索效果最好的是基于概率的BM25模型. 给定一个查询Q和一篇文档d,d对Q的BM25得分 ...

最新文章

  1. 收购创业公司如何评估价值
  2. c3p0数据库连接池+mysql数据库基本使用方法
  3. 《如何阅读一本书》之 阅读的层次
  4. Python-OpenCV设置摄像头分辨率
  5. 假如给Go语言加上注解,程序会变怎样?
  6. 腾讯“狠心”出手了,这款游戏,未成年人每天限玩1.5小时
  7. 有时候能讲出来,比沉默要好吧
  8. poj 3384 Feng Shui (Half Plane Intersection)
  9. java 新项目计划_Java的新项目学成在线笔记-day6(十二)
  10. hive出现内存溢出_hive问题处理
  11. vb连接mysql的方法_VB几种连接数据库的方法
  12. 关于优化云成本,你应该知道的事
  13. html页面背景图片不够大怎么办,Word背景图片不够大怎么办
  14. 追忆似水流年,似水高三
  15. java面试死神之蛇形遍历
  16. CAD如何修改标注样式?
  17. 【读者来信】你所认识的世界不一定是真实的
  18. centos 释放swap_CentOS下SWAP分区建立及释放内存详解
  19. 能吃的东西还有多少!!!!
  20. DeepLearning4J入门——使用LSTM进行大盘回归

热门文章

  1. RegisterStartupScript和RegisterClientScriptBlock的用法
  2. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
  3. ajax同步导致ajax上面的代码不执行?
  4. Java 动态代理机制详解
  5. linux计划任务与日志管理(日志分割/切割)
  6. VMware Workstation Pro 虚拟机做RAID
  7. zabbix的boot.log占满根目录不能ssh连接No space left on device
  8. shell awk实现实时监控网卡流量脚本(常见应用二)
  9. nginx启动报错 :Failed to start The nginx HTTP and reverse prox...er.
  10. init 0 init1 init 3 init 5 init 6 这几个启动级别都代表什么意思