BZOJ 1002: [FJOI2007]轮状病毒 递推/基尔霍夫矩阵树定理


f[n]=3*f[n-1]-f[n-2]+2

1002: [FJOI2007]轮状病毒

Time Limit: 1 Sec   Memory Limit: 162 MB
Submit: 2959   Solved: 1644
[ Submit][ Status][ Discuss]

Description

给定n(N<=100),编程计算有多少个不同的n轮状病毒。

BZOJ 1002: [FJOI2007]轮状病毒 递推/基尔霍夫矩阵树定理_第1张图片

Input

第一行有1个正整数n。

Output

将编程计算出的不同的n轮状病毒数输出

Sample Input

3

Sample Output

16



/**************************************************************
    Problem: 1002
    User: CKboss
    Language: Java
    Result: Accepted
    Time:888 ms
    Memory:14824 kb
****************************************************************/
 
import java.util.*;
import java.math.*;
 
 
public class Main {
     
    BigInteger[] ct = new BigInteger[120];
     
    void init(){
        ct[1]=BigInteger.valueOf(1);
        ct[2]=BigInteger.valueOf(5);
        ct[3]=BigInteger.valueOf(16);
         
        for(int i=4;i<=100;i++){
            ct[i]=ct[i-1].multiply(BigInteger.valueOf(3)).subtract(ct[i-2]).add(BigInteger.valueOf(2));
        }
    }
     
    Main(){
        Scanner in = new Scanner(System.in);
        init();
        int n=in.nextInt();
        System.out.println(ct[n]);
    }
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Main();
    }
 
}


你可能感兴趣的:(BZOJ 1002: [FJOI2007]轮状病毒 递推/基尔霍夫矩阵树定理)