落枕学python—专题2—代码解决数学题(3)
1. 前言
上一次,咱们留下了一个预告,说要搞一道拓展题,辣么我们就来康一康吧!
2. 题目
已知:M = (4+2√3)3
它的小数部分为P
求:M(1-P)
2.1 解题思路
本题最重要的两个点就是M还有P,至于最后的计算工作,只要输入的没问题,就全部交给计算机了,那么小数部分怎么算呢?
2.1 解题思路(补充说明)
在知道怎么编写代码之前,我先为一些还不知道什么是小数部分的人解释一下,知道的人就过。
再讲小数部分之前,我们先提一下他的父亲,叫做:整数部分
这个怎么求捏?
对于一形式较复杂的数,要求其整数部分与小数部分,则必须先化简,然后观察分析该结果是介于哪两个相邻的整数之间.同时在取其整数部分时应是两相邻整数中较小的整数值。
举个例子🌰:
求√2的整数部分
√2≈1.4142135623730951
那么它的整数部分就是1
似乎很简单,但是人生处处都是坑,下面一个你会不会错呢?
求-3.14的整数部分
有的人下意识的反应可能就是-3,但是各位细心的朋友已经发现了,-3是比-3.14要大的!所以说他的整数部分应该是-4
看完整数部分,咱们就来讲小数部分。
小数部分的概念比较好理解
一个数减去他的整数部分就是他的小数部分
但是万万要注意,√2的小数部分是万万不能说是约等于0.414哦。
2.1 解题思路(续)
该解释的都解释好了,咱们就可以进行下一步动作了。
M很简单,直接往编辑器里面一套就可以,就是符号别忘了,本人老是犯这样的错误。
from math import sqrt
m = (4 + 2 * sqrt(3))**3
接下来我们来看P,经过前面的打底,我们知道,要求小数部分,就得知道整数部分。
我们可以用无限循环来弄出来,如果比他小,就继续增大,并将刚刚生成的数存入列表,直到比他大了,就停止,取列表最大的一个,一般就是最后一个,就是M的整数部分,要求小数部分,就再拿M去减去这个数就可以了。
# 这个是建立在刚刚的代码之上的,在复制的时候,记得要把前面一段给复制进去
a = 0 # 随便定义一个就行
p_list = []
p = 0
while True:
a = a + 1
if a <= m:
p_list.append(a)
else:
break
p = m - max(p_list)
最后把M还有P全部带入式子里就大功告成啦!
3 代码实现
前面都带着大家写了,就不多做赘述了。
把我们最后一步的代码先贴出来,再把整篇贴上来
ans = m*(1-p)
# 咱们这里得注意,由于python对于浮点数的计算有时候会有一点偏差,咱们用round()精确一下
print(round(ans))
不出意外,应该是64。
最后贴源码(贴了似乎也没啥用,但我还是毅然决然的要贴上来🐶)
from math import sqrt
m = (4 + 2 * sqrt(3))**3
a = 0
p_list = []
p = 0
while True:
a = a + 1
if a <= m:
p_list.append(a)
else:
break
p = m - max(p_list)
ans = m*(1-p)
print(round(ans))
这一篇就到这里啦,希望大家可以喜欢哦记得三连!有关必回!感谢感谢!(狗头保命)
如有雷同,纯粹是心有灵犀,不是抄袭哦!
如果各位觉得有侵犯他人作品的权益的,请私信寻找作者哦!感谢支持与理解!