1. 程式人生 > >輪狀病毒 HYSBZ

輪狀病毒 HYSBZ

輪狀病毒有很多變種,所有輪狀病毒的變種都是從一個輪狀基產生的。一個N輪狀基由圓環上N個不同的基原子
和圓心處一個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示

  N輪狀病毒的產生規律是在一個N輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不
同的3輪狀病毒,如下圖所示
  現給定n(N<=100),程式設計計算有多少個不同的n輪狀病毒

Input

  第一行有1個正整數n

Output

  計算出的不同的n輪狀病毒數輸出 

Sample Input 3 Sample Output 16

遞推式: f [ n ]= 3* f[ n-1 ]- f[ n-2 ]+2; 具體推導:

矩陣樹定理 java 高精;



import java.math.*;


import java.util.Scanner;





public class Main {
      public static void main(String[] args) {
      Scanner cin=new Scanner(System.in);
      int n;n=cin.nextInt();
      BigInteger[] array;
      array=new BigInteger[200];
      array[1]=BigInteger.valueOf(1
);array[2]=BigInteger.valueOf(5); if(n==1)System.out.println(1); else if(n==2)System.out.println(5); else { for(int i=3;i<=n;i++) { array[i]=array[i-1].multiply(BigInteger.valueOf(3)).subtract(array[i-2]).add(BigInteger.valueOf(2)); } System.out.println
(array[n]); } // cin.close(); } }