题目描述
输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数)。
View Code
View Code
输入描述:
每组输入包括1个整数:n
输出描述:
可能有多组测试数据,对于每组数据,
输出题目要求的y1和y2
Python实现:
1 def temp(n): 2 if n>0: 3 return n*temp(n-1) 4 else: 5 return 1 6 7 def result(n): 8 yy1 = range(1,n+1,2) 9 yy2 = range(2,n+1,2) 10 y1 = map(temp,yy1) 11 y2 = sum(map(temp,yy2)) 12 print y1,y2 13 14 while True: 15 try: 16 n = int(input()) 17 result(n) 18 except: 19 break
主要应用到Python的map和sum,map是Python内置的高阶函数,它接收一个函数f和一个list,通过map(f,list)把f依次作用在list的每个元素上,得到一个新的list并返回。
Java实现:
1 public class Factorial { 2 3 public static void main(String[] args) { 4 Scanner sc = new Scanner(System.in); 5 while(sc.hasNext()){ 6 int n=sc.nextInt(); 7 int y1=0,y2=0; 8 for(int i=2;i<n;i+=2){ 9 y2+=f(i); 10 } 11 for(int i=1;i<=n;i+=2){ 12 y1+=f(i); 13 } 14 System.out.println(y1 + " "+ y2); 15 } 16 } 17 public static int f(int n){ 18 if (n==0) return 1; 19 if (n==1) return 1; 20 return f(n-1)*n; 21 } 22