博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python与有趣的数学2
阅读量:3959 次
发布时间:2019-05-24

本文共 1721 字,大约阅读时间需要 5 分钟。

这篇博客是收集整理了一些以前平时的练手题目以及比较有意思的题目,锻炼思维逻辑和编程的能力的题,并附上个人的思路代码,多种解法。若大家有不同的见解,可以留言一起交流,后续也会继续发布新的内容。

目录

例1、水仙花数

题目:打印出所有"水仙花数","水仙花数"是指一个三位数,其各位数字立方和等于该本身。

例如:153是一个水仙花数,因为153=13+53+33
题解:该题训练的是循环和数字的拆分,循环所有的三位数,将其拆分为三个数字,再实现三次方和与本身是否相等的判断。循环很简单,只要了解了边界就好。数字分割有两种方法:基本方法和函数库法
基本方法:

#取余数print(123%10)#去中间数字# int是剪去小数部分,只保留前面的整数print(int((126%100)/10))print(int((123%100)/10))#通过这两个数字我们验证了int的取整规则# 取第一位print(int(123/100))

在这里插入图片描述

当然基本的方法只适用于比较短的数字,当数字很大的时候就不是很方便。

函数库
map ()函数的作用就是,依次从这个列表中取出每一个元素,然后放到f (x)函数中,最终得到一个通过函数映射后的结果。
下面的方法是我以前的代码中做出来的,首先将数字转化为字符再进行挨个取整,最后添加进列表内。实现了数字的切割。

a=list(map(int,str(123)))print(a)

通过下图对比,我们发现两种方法的不同一目了然,理解第二个方法的原理,会减少代码量。

在这里插入图片描述代码:

for i in range(100,1000):    a = list(map(int, str(i)))    # print(a)    if i == a[0]**3+a[1]**3+a[2]**3:        print(i)

在这里插入图片描述

例2、鸡兔同笼问题

假设共有鸡、兔 30 只,脚 90 只,求鸡、兔各有多少只。

设计两层循环鸡和兔的数量,我们范围是(0~脚的总数量/一只鸡或兔的腿的数量),最里面判断教的数量书否等于总数。

for x in range(0,45):    for y in range(0,23):        if x + y==30  and 2*x+4*y==90 :            print(x,y)            break

例3、百钱买百鸡

假设公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元三只,现在有 100 块钱,想买 100 只鸡,问有多少种买法?

设计三层循环,加判断等式成立时的结果。

for x in range(0,21):    for y in range(0,34):        for z in range(0,34):            if x*5+y*3+z==100 and x+y+z*3==100:                print(x,y,z)

例4、最大公约数和最小公倍数

编写函数,接收两个正整数作为参数,返回一个数组,其中第一个元素为最大公约数,第二个元素为最小公倍数。

import mathx=int(input("请输入第一个整数:"))y=int(input("请输入第二个整数:"))a=[]b=[]for m in range(2,x+1):    for n in range(2,y+1):        if x%m==0 and y%n==0 and m==n :            a.append(m)b.append(max(a))b.append(int((x*y)/b[0]))print(b)

例5、不重复四位数

a=[1,2,3,4]c=0for x in a:    for y in a:        if x!=y:            for z in a:                if x!=z and y!=z:                    c+=1                    print(x*100+y*10+z)print(c)

转载地址:http://zttzi.baihongyu.com/

你可能感兴趣的文章
hdu——3746Cyclic Nacklace(kmp专练)
查看>>
hdu——1358Period(kmp专练)
查看>>
hust——1010F - The Minimum Length(kmp专练)
查看>>
poj——2406Power Strings(kmp专练)
查看>>
poj——2752Seek the Name, Seek the Fame(kmp专练 找出前后相同的字串)
查看>>
校赛 选修课网址 1096: Is The Same?(kmp或者find)
查看>>
选修课网址 1088: The Owl and the Fox
查看>>
校赛 选修课网址 1097: Meeting
查看>>
hdu——2084数塔
查看>>
hdu——1010Tempter of the Bone
查看>>
hdu——1062Text Reverse(反转函数reverse)
查看>>
hdu——1061Rightmost Digit(快速幂)
查看>>
无向图最短路径dijkstra算法
查看>>
hdu 1284钱币兑换问题(dp)
查看>>
hdu 1028Ignatius and the Princess III(dp)
查看>>
hdu 1398Square Coins(dp或者母函数)
查看>>
hdu 2069Coin Change(dp)
查看>>
hdu 1159Common Subsequence(dp 最大不连续的子序列)
查看>>
hdu 1003Max Sum(dp)
查看>>
hdu 1874畅通工程续(dijkstra算法)
查看>>