作者: 负雪明烛
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. 1 <= N <= 10000
  2. -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 日 —— 周赛进了第一页!

最新文章

  1. 解决java文件编码和windows7系统(中文版)默认编码冲突所导致的乱码情况
  2. HDU1005
  3. spring管理bean
  4. Launch Screen在iOS7/8中的实现
  5. nginx rewirte
  6. Sql Server 里的向上取整、向下取整、四舍五入取整
  7. iOS上传文件,有关http上传协议-RFC1867
  8. CMDB反思1
  9. Xcode的后缀字母的意思是
  10. AC题目简解-数据结构
  11. linux共享windows资料
  12. C - Surprising Strings
  13. centos 挂载windows共享目录
  14. iframe间的通信
  15. HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架
  16. Android自动打包工具aapt详解
  17. 解决在圆角手机(如小米8)上自定义Dialog无法全屏的问题
  18. R语言数据集的技术
  19. 前端ajax技术之跨域问题解决
  20. 运维常用mysql语句

热门文章

  1. sersync+rsync进行数据同步
  2. Excel—在Excel中利用宏定义实现MD5对字符串(如:手机号)或者文件加密
  3. C语言中的字节对齐
  4. 日常Java 2021/11/18
  5. addict, address, adequate.四级
  6. acute
  7. acclaim
  8. accent, access, accident
  9. day16 循环导入、模块搜索路径、软件开发、包的使用
  10. Flink(二)【架构原理,组件,提交流程】