首页 > 试题广场 >

阶乘

[编程题]阶乘
  • 热度指数:22722 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数)。

输入描述:
每组输入包括1个整数:n


输出描述:
可能有多组测试数据,对于每组数据,
输出题目要求的y1和y2
示例1

输入

4

输出

7 26
def jie(x):
    if x == 1:
        return 1
    else:
        return x * jie(x - 1)

if __name__ == "__main__":
    n = int(input())
    ji = []
    ou = []
    y1, y2 = 0, 0
    for i in range(1,n+1):
        if i % 2 == 0:
            ou.append(i)
        else:
            ji.append(i)
    for j in ji:
        temp = jie(j)
        y1 += temp
    for k in ou:
        temp = jie(k)
        y2 += temp
    print(str(y1), end=" ")
    print(str(y2))

发表于 2021-10-21 22:13:35 回复(0)
def jiecheng(i):
    if i==0:
        return 0
    else:
        sum1=1
        while i!=1:
            sum1=sum1*i
            i-=1
        return sum1
while True:
    try:
        n=int(input().strip())
        list1=[]
        list2=[]
        sum1=0
        sum2=0
        for i in range(n+1):
            if i%2==0:
                sum1+=jiecheng(i)
            else:
                sum2+=jiecheng(i)
        print(str(sum2)+' '+str(sum1))
    except:
        break
发表于 2019-08-30 08:48:12 回复(0)
n,g = int(input()),lambda n:n if n == 1 or n == 0 else n*g(n-1)
print(sum(g(i) for i in range(1,n+1,2)),sum(g(j) for j in range(2,n+1,2)))
Two Line Python Solution
发表于 2018-07-05 02:00:17 回复(0)

python 4 lines solution:

from math import factorial as f

while True:
    try:
        a, odd, even = int(input()), 0, 0
        for i in range(2, a + 1, 2):            even += f(i)
        for i in range(1, a + 1, 2):            odd += f(i)
        print(str(odd) + " " + str(even))

    except:
        break
发表于 2017-10-01 17:05:15 回复(0)
交上python版
def f(n):
	return reduce(lambda x,y:x*y,[1]+range(1,n+1))

try:
	while 1:
		n = input()
		y1 = sum(map(f,range(1,n+1,2)))
		y2 = sum(map(f,range(2,n+1,2)))
		print y1,y2
except:
	pass

发表于 2017-05-22 15:11:41 回复(0)
 _factorial = lambda n: reduce(lambda x, y: x * y, xrange(1, n + 1))

odd = lambda x: x - (x + 1) % 2

even = lambda x: x - x % 2

def y(n):
    m = odd(n)
    p = even(n)
    y1 = sum(_factorial(x) for x in xrange(1, m + 1, 2))
    y2 = sum(_factorial(x) for x in xrange(2, p + 1, 2))
    return y1, y2


if __name__ == '__main__':
    while 1:
        try:
            n = int(input())
            y1, y2 = y(n)
            print y1, y2
        except:
            break

发表于 2017-05-01 23:28:03 回复(0)
def multi(n):
    mul = 1
    for i in range(1,n+1):
        mul *= i
    return mul
def result(n):
    result1 = 0
    result2 = 0
    for item in range(1,n+1,2):
        result1 += multi(item)
    for item1 in range(2,n+1,2):
        result2 += multi(item1)
    print result1,result2
while True:
    try:
        n = input()
        result(n)
    except:
        break
发表于 2017-03-06 14:31:07 回复(0)

问题信息

难度:
7条回答 22769浏览

热门推荐

通过挑战的用户

查看代码