任务要求
计算下列数学表达式的结果并输出,结果向上取整保留整数。
res =
程序接收变量 num,返回的是 res。
注明:
* 代表乘。如 2 * 3 代表2乘以3,结果是 6;
^ 代表次方。如2 ^ 3代表2的3次方,结果是 8。
任务分析
可以分为以下几个步骤:
1. 分子计算:首先计算分子部分。
2.分数计算:将分子除以输入参数num。
3.平方根计算:对分数结果开平方。
4.向上取整:对平方根结果向上取整。
任务实现
方法一:直接使用Python内置库
import math
class Solution:
def SpMtFml(self, num: int) -> int:
numerator = 3 ** 4 + 5 * 6 ** 5
result = math.ceil((numerator / num) ** 0.5)
return result
s = Solution()
print(s.SpMtFml(5)) # 输出结果
说明:
- import math导入了math库。
- math.ceil()函数对平方根结果进行向上取整。
方法二:不使用math模块
class Solution:
def SpMtFml(self, num: int) -> int:
numerator = 3 ** 4 + 5 * 6 ** 5
value = (numerator / num) ** 0.5
result = int(value) if value == int(value) else int(value) + 1
return result
s = Solution()
print(s.SpMtFml(5)) # 输出结果
说明:不使用math模块,通过其他方式实现相同的功能。
向上取整:通过判断平方根是否为整数来决定是否加1。
- 如果平方根是整数,则直接转换为整数。
- 如果不是整数,则将整数部分加1。
方法三:优化分子计算
import math
class Solution:
def __init__(self):
self.numerator = 3 ** 4 + 5 * 6 ** 5 # 预先计算分子部分
def SpMtFml(self, num: int) -> int:
result = math.ceil((self.numerator / num) ** 0.5)
return result
s = Solution()
print(s.SpMtFml(5)) # 输出结果
说明:预先计算分子部分的值,以提高效率。在类的__init__方法中预先计算分子部分。
运行结果
89
进程已结束,退出代码为 0