HDU 4475 HDOJ Downward paths

http://acm.hdu.edu.cn/showproblem.php?pid=4475

题目意思:

  给定边长为n的正三角形,如图分成单位三角形,然后从顶点出发,到最下层的任一点,问有多少种方案。

  其中,防线可以是水平和向下,但不能走回头路。

递推:ans[n]=ans[n-1]*n*2

对于ans[n],考虑ans[n-1]到达第n-1层,第n-1层有n个点,对于每种方案,均可平移至n个点中的任意一个(若为本身,则相当于没动),对于下一步,有左右两种方案。

可以整理得ans[n]=n! * 2^n,所以n>=mod时,答案为0。

最近在练java,所以代码是java的

 1 import java.util.*;
 2 public class Main {
 3     public static void main(String[] args){
 4         Scanner cin=new Scanner(System.in);
 5         long[] ans=new long[1000100];
 6         int m=1000003,T=cin.nextInt();
 7         ans[1]=2;
 8         for(int i=2;i<m;i++)ans[i]=ans[i-1]*2*i%m;
 9         while(T--!=0){
10             long n=cin.nextLong();
11             if(n<m) System.out.println(ans[(int)n]);
12             else System.out.println("0");
13         }
14         cin.close();
15     }
16 }
原文地址:https://www.cnblogs.com/hundundm/p/2798133.html