首页 > 代码库 > NYOJ题目65另一种阶乘问题

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 }

 

题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=65

NYOJ题目65另一种阶乘问题