NYOJ题目65另一种阶乘问题
-------------------------------
水、
当然水题也要有缓存,缓存复用真是伟大的思想,膜拜提出此思想的不知道名字的神犇。
AC代码:
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 Scanner sc=new Scanner(System.in); 8 9 int times=sc.nextInt(); 10 while(times-->0){ 11 int n=sc.nextInt(); 12 System.out.println(solve(n)); 13 } 14 } 15 16 private static long buffer[]=new long[21]; 17 18 public static long fac(int n){ 19 if(n/2*2==n) return 0; 20 if(n==1) return 1; 21 if(buffer[n]!=0) return buffer[n]; 22 return buffer[n]=fac(n-2)*n; 23 } 24 25 public static long solve(int n){ 26 long res=0; 27 while(n>0) res+=n/2*2==n?fac(n---1):fac(n--); 28 return res; 29 } 30 31 }