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 }