【LeetCode】1006. Clumsy Factorial 解题报告(Python)
作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/
题目地址:https://leetcode.com/problems/clumsy-factorial/
题目描述
Normally, the factorial of a positive integer n
is the product of all positive integers less than or equal to n
. For example, factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
.
We instead make a clumsy factorial: using the integers in decreasing order, we swap out the multiply operations for a fixed rotation of operations: multiply (*), divide (/), add (+) and subtract (-) in this order.
For example, clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1
. However, these operations are still applied using the usual order of operations of arithmetic: we do all multiplication and division steps before any addition or subtraction steps, and multiplication and division steps are processed left to right.
Additionally, the division that we use is floor division such that 10 * 9 / 8
equals 11
. This guarantees the result is an integer.
Implement the clumsy
function as defined above: given an integer N
, it returns the clumsy factorial of N
.
Example 1:
Input: 4
Output: 7
Explanation: 7 = 4 * 3 / 2 + 1
Example 2:
Input: 10
Output: 12
Explanation: 12 = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1
Note:
- 1 <= N <= 10000
- -2^31 <= answer <= 2^31 - 1 (The answer is guaranteed to fit within a 32-bit integer.)
题目大意
常规的阶乘是从N到1各个数字连乘,但是这个题设计了一个新的函数:笨拙阶乘。做法是把N到1各个数字依次使用乘、除、加、减的循环进行连接。最终的结果也是按照普通的四则运算来做。求一个数的笨拙阶乘的结果是多少。
解题方法
直接eval
很惭愧,我作弊了,用的python的函数eval,直接表达式求值就可以了。
Python代码如下:
class Solution(object):
def clumsy(self, N):
"""
:type N: int
:rtype: int
"""
cl = ""
ops = ["*", "/", "+", "-"]
op = 0
for n in range(N, 0, -1):
if n != 1:
cl += str(n) + ops[op % 4]
else:
cl += "1"
op += 1
return eval(cl)
日期
2019 年 3 月 10 日 —— 周赛进了第一页!
最新文章
- 解决java文件编码和windows7系统(中文版)默认编码冲突所导致的乱码情况
- HDU1005
- spring管理bean
- Launch Screen在iOS7/8中的实现
- nginx rewirte
- Sql Server 里的向上取整、向下取整、四舍五入取整
- iOS上传文件,有关http上传协议-RFC1867
- CMDB反思1
- Xcode的后缀字母的意思是
- AC题目简解-数据结构
- linux共享windows资料
- C - Surprising Strings
- centos 挂载windows共享目录
- iframe间的通信
- HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架
- Android自动打包工具aapt详解
- 解决在圆角手机(如小米8)上自定义Dialog无法全屏的问题
- R语言数据集的技术
- 前端ajax技术之跨域问题解决
- 运维常用mysql语句