落枕学python—专题2—代码解决数学题(3)

落枕学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))

这一篇就到这里啦,希望大家可以喜欢哦记得三连!有关必回!感谢感谢!(狗头保命)
如有雷同,纯粹是心有灵犀,不是抄袭哦!
如果各位觉得有侵犯他人作品的权益的,请私信寻找作者哦!感谢支持与理解!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fkdlz-疯狂的落枕ὢ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值